【发布时间】:2019-07-05 18:03:22
【问题描述】:
我是 Spring 安全的新手。我已经实现了 Spring Security 并生成了 JWT 令牌。现在我需要从令牌中获取用户并将其设置在会话中,以便该用户的会话保持到令牌过期或注销。另一方面,我需要从控制器访问 API,但 Spring Security 不允许在没有 JWT 令牌的情况下访问 API。是否可以通过全局设置 JWT 令牌或在所有请求的会话中访问我的控制器中的 API。
这是我到目前为止尝试过的,
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";
我在用户登录时执行此操作。我在前端使用 Thymeleaf。
提前感谢您的帮助!!
【问题讨论】:
标签: java model-view-controller spring-security jwt thymeleaf