我不是Spring Security
的忠实粉丝,我认为它太过分了。所以我正在尝试使用替代方案来保护我的rest API
,其中一个我喜欢的是基于拦截器的Spring sandwich。
我唯一的问题是我希望smth类似于SecurityContextHolder.getContext().getAuthentication().getPrincipal();
所以我不必每次都传递用户,而是更多的全局对象。
任何人都知道如何做到这一点?
ps:我正在使用spring boot
答案 0 :(得分:0)
虽然我强烈建议重新考虑Spring Security,但您也可以使用HttpSession作为替代方案。
当用户登录时,您可以存储“用户”#39;像他这样的会话中的对象:
@RequestMapping("/login")
public String login(HttpSession session, @RequestParam String username, @RequestParam String password) {
// check if user has right credentials ...
session.setAttribute("USER", user);
return "You have logged in successfully"; // you can also redirect instead, do as you wish
}
然后您可以像这样访问User对象:
User user = (User)session.getAttribute("user");
您还可以从HttpServletRequest
(request.getSession()
)
或者,如果由于某种原因你无法将对象HttpSession传递给你的控制器,你也可以像这样自动装配会话:
@Autowired
private HttpSession session;
有关详细信息,请参阅Spring Session