Size: a a a

2019 June 13

N

Naiman in Astana JKUG
The Qualification Round of the 2019 Facebook Hacker Cup

https://www.facebook.com/hackercup/posts/2477818718916968
источник
2019 June 17

M

Maksat in Astana JKUG
кто-нибудь пользовался spring session?
источник

M

Maksat in Astana JKUG
мне надо обрубать доступ пользователям, которые бездействовали более 30 минут. Я для этого в redis ложил id юзера, и при каждом rest-запросе обновлял его expire time. Таким образом, если юзер не заходил более 30 минут, то объект из redis удаляется. А я в spring filter иду в redis  и если не нахожу объект, то выбрасываю exception.

Это решение в лоб. Но надо чтобы юзер мог попасть на не-secured-ресурсы, т.е. на те которые не требуют авторизации. Например новости, или endpoint для логина.

Если делать не как я, а через spring session, то можно ли там рулить сессиями? Т.е. обрывать доступ, но только на защищенные ресурсы?

И второе - мне надо в любой момент времени вытаскивать всех юзеров с активной сессией. При моем подходе я просто вытаскиваю всё что лежит в redis - это и есть активные сессии. А через spring session это реализуемо?
источник

ES

Eugene Svalukhin in Astana JKUG
по поводу secured ресурсов - надо просто правильно настроить spring security чтобы он только на secured ресурсы отрабатывал, никакого отношения ведь это не имеет к spring session
источник

ES

Eugene Svalukhin in Astana JKUG
по поводу активных сессий, а как вы удаляете сессии у которых больше 30 минут неактивности? через какой-то планировщик?
источник

b

batyrbayev_fs in Astana JKUG
а разве это не на сервере приложений делается?
источник

b

batyrbayev_fs in Astana JKUG
помню у  SAP AS было свойство inactive session
источник

b

batyrbayev_fs in Astana JKUG
думаю у других тоже есть
источник

M

Maksat in Astana JKUG
Eugene Svalukhin
по поводу активных сессий, а как вы удаляете сессии у которых больше 30 минут неактивности? через какой-то планировщик?
Нет. Я время жизни объекта в redis задаю. Он это из коробки делает.

А насчёт secured ресурсов все так и работает. Проблема в другом. В том, что я не должен применять свою логику внутри Session-фильтра который реджектит запросы, для которых не нашлось объекта в Redis на те ресурсы, где стоит permitAll()
источник

M

Maksat in Astana JKUG
batyrbayev_fs
а разве это не на сервере приложений делается?
У меня tomcat. Возможно тоже есть. Но это плохой вариант, так как если скейлить приложение, то работать не будет. Плюс мне надо одним разом вытащить все активные сессии на всех серверах
источник

ТИ

Толеген Избасар in Astana JKUG
Слушай @shadowsmind а как в ФП принято совмещать бизнес ошибки с exception? Допустим у меня функция возвращает Option, возвращать Either[Throwable, Option[]]?
источник

ES

Eugene Svalukhin in Astana JKUG
Maksat
Нет. Я время жизни объекта в redis задаю. Он это из коробки делает.

А насчёт secured ресурсов все так и работает. Проблема в другом. В том, что я не должен применять свою логику внутри Session-фильтра который реджектит запросы, для которых не нашлось объекта в Redis на те ресурсы, где стоит permitAll()
попробуйте в @jvmchat спросить, там много народу тусуется, кто со спрингом работал
источник

A

Alexandr in Astana JKUG
Толеген Избасар
Слушай @shadowsmind а как в ФП принято совмещать бизнес ошибки с exception? Допустим у меня функция возвращает Option, возвращать Either[Throwable, Option[]]?
через ErrorMonad все можно сделать
источник

A

Alexandr in Astana JKUG
а вообще никто не возвращает Either[Exception, T], чаще делают свой кастомный класс ошибок Erorr, и делают тайп алиас type Result[T] = Either[Error, T]
источник

A

Alexandr in Astana JKUG
дальше когда уже "эволюционируешь, будешь юзать монад трансформеры, ибо мамать Future[Result[T]] будет неудобно
источник

A

Alexandr in Astana JKUG
еще дальше - будешь юзать MonadError, а когда совсем упорешься, будешь юзать IO
источник

ТИ

Толеген Избасар in Astana JKUG
Alexandr
дальше когда уже "эволюционируешь, будешь юзать монад трансформеры, ибо мамать Future[Result[T]] будет неудобно
Я видимо уже сюда и дошёл ибо так и сделал свой тип Result и неудобно матчить стало
источник

ТИ

Толеген Избасар in Astana JKUG
Правда ковыряю все это дело в Котлин/arrow. Там все не очень удобно. Вместо for comprehension -> bind, который через extension методы и запутанные типы работает...
источник

ТИ

Толеген Избасар in Astana JKUG
Вот в Haskell все гораздо приятнее. Kinds интуитивно понятны как функции, просто вместо аргументов типы. В скала с kind projections выглядит более менее, но вот в Котлин это чуток адок)
источник

A

Alexandr in Astana JKUG
Толеген Избасар
Вот в Haskell все гораздо приятнее. Kinds интуитивно понятны как функции, просто вместо аргументов типы. В скала с kind projections выглядит более менее, но вот в Котлин это чуток адок)
дело говоришь
источник