Как реализовать безопасность Spring в приложении Spring MVC? - PullRequest
0 голосов
/ 12 февраля 2019

Я новичок в безопасности Spring.Я реализовал Spring Security и сгенерировал токен JWT.Теперь мне нужно получить пользователя из токена и установить его в сеансе, чтобы сеанс этого пользователя сохранялся до истечения срока действия токена или выхода из него.С другой стороны, мне нужно получить доступ к API из контроллера, но пружинная защита не позволяет получить доступ к API без JWT Token.Можно ли получить доступ к API в моем контроллере, установив токен JWT глобально или в сеансе для всех запросов.

Вот то, что я пробовал до сих пор,

  UsernamePasswordAuthenticationToken authenticationToken=new UsernamePasswordAuthenticationToken(loginRequest.getUserName(), loginRequest.getPassword());
                Authentication authentication = this.authenticationManager.authenticate(authenticationToken);
                SecurityContextHolder.getContext().setAuthentication(authentication);
                String jwt = tokenProvider.generateToken(authentication);               
                logger.info("jwt is:"+jwt);
                logger.info("authentication:"+authentication.getName());
                User user2 = new User();
                user2.setUserFirstName(user.getFirstName());
                user2.setUserLastName(user.getLastName());
                request.getSession().setAttribute("loggedInUser",user2);
                request.getSession().setMaxInactiveInterval(60);
                request.getSession().setAttribute("menu", MenuUtils.buildMenu(user2));
                return "home";

I 'Я делаю это при входе в систему.Я использую Thymeleaf во внешнем интерфейсе.

Спасибо за помощь заранее !!

1 Ответ

0 голосов
/ 12 февраля 2019

Вам нужно добавить токен jwt в заголовки запроса при доступе к apis:

headers.add(HttpHeaders.AUTHORIZATION, "Bearer " + jwt);

Это позволяет API читать заголовки и проверять пользователя и его разрешения

Вам не нужно хранить пользователя в сеансе.У самого токена есть дата окончания срока действия, и он должен отправляться из браузера на сервер при каждом запросе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...