设置登录用户没有弹簧安全性

时间:2018-04-18 09:51:47

标签: spring spring-boot spring-security

我不是Spring Security的忠实粉丝,我认为它太过分了。所以我正在尝试使用替代方案来保护我的rest API,其中一个我喜欢的是基于拦截器的Spring sandwich

我唯一的问题是我希望smth类似于SecurityContextHolder.getContext().getAuthentication().getPrincipal(); 所以我不必每次都传递用户,而是更多的全局对象。

任何人都知道如何做到这一点?

ps:我正在使用spring boot

1 个答案:

答案 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");

您还可以从HttpServletRequestrequest.getSession()

获取会话

或者,如果由于某种原因你无法将对象HttpSession传递给你的控制器,你也可以像这样自动装配会话:

@Autowired 
private HttpSession session;

有关详细信息,请参阅Spring Session