Spring security:用户是登录的还是匿名的?
Posted
技术标签:
【中文标题】Spring security:用户是登录的还是匿名的?【英文标题】:Spring security: is the user logged in or anonymous? 【发布时间】:2015-06-22 20:56:47 【问题描述】:我需要一个公共的 restful 端点,它可以告诉我当前用户是否登录。由于用户可能被认证为anonymousUser,我不能这样做:
if (SecurityContextHolder.getContext().getAuthentication().isAuthenticated())
...
通过查看其他一些帖子,看来我可能需要做一些笨拙的事情,例如在授予权限中实际寻找匿名角色。有没有更简单的方法?
【问题讨论】:
【参考方案1】:你也可以use(不是很好,但可以):
SecurityContextHolder.getContext().getAuthentication() != null &&
SecurityContextHolder.getContext().getAuthentication().isAuthenticated() &&
//when Anonymous Authentication
!(SecurityContextHolder.getContext().getAuthentication()
instanceof AnonymousAuthenticationToken)
【讨论】:
【参考方案2】:这是我认为最简单的解决方案:
// permitAll
@RequestMapping(method = RequestMethod.GET, value = "/isAuthorized")
public String isAuthorized(Principal user)
return user != null ? "Y" : "N";
【讨论】:
以上是关于Spring security:用户是登录的还是匿名的?的主要内容,如果未能解决你的问题,请参考以下文章
Spring security3.1.x session问题,求解
Spring Security 推荐的设计以请求用户登录到具有不同角色的不同用户