Bleser
@Bleser

Как правильно реализовать token аутентификацию с remember me на Spring security?

Хочу сделать авторизацию которая бы сохранялась при перезапуске браузера, сейчас получилось сделать авторизацию только до конца сессии. Пробовал добавить в конфиги настройку для remeber-me, но создалась только таблица в базе и туда ничего не записывается и cookie не приходит в ответ. В качестве клиента использую Angular 2 на отдельном сервере.
Может кто то видел нормальный ример реализации такой авторизации или сам с этим сталкивался и может дать совет.

UPDATE 1
Теперь cookie отправляется на клиент и в базе токен тоже сохранятеся. Сделал следующим образом:
1)Наследуемся от PersistentTokenBasedRememberMeServices переопределяем метод onLoginSuccess и делаем его публичным.
2)создаем бин класса из п.1
3)В контроллере к параметрам метода который замапин к URL страницы логина добовляем
HttpServletRequest request, HttpServletResponse response
, например

@RequestMapping(value = "/api/login", method = RequestMethod.POST, produces = {APPLICATION_JSON_VALUE, APPLICATION_XML_VALUE})
    public void postLogin(@RequestBody EntityUser body, HttpServletRequest request, HttpServletResponse response) {
UserDetails userDetails = detailsService.loadUserByUsername(username);

        UsernamePasswordAuthenticationToken token =
            new UsernamePasswordAuthenticationToken(username,user.getPassword(),userDetails.getAuthorities());

        myTokenRememberMeService.onLoginSuccess(req,res,token);

        if (token.isAuthenticated())
        SecurityContextHolder.getContext().setAuthentication(token);
}


4)создаем токен UsernamePasswordAuthenticationToken заполняем и вызываем метод onLoginSuccess передав одним из параметров созданый токен, проверяем что аутентификация прошла и добавляем токен в security context.
P.S. У меня такое чуство что это жесткий костыль и можно сделать все гораздо проще, а пока работает и ладно))
  • Вопрос задан
  • 1060 просмотров
Решения вопроса 1
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы