首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring security @notation for IS_AUTHENTICATED_FULLY?

Spring security @notation for IS_AUTHENTICATED_FULLY?
EN

Stack Overflow用户
提问于 2010-03-27 06:33:29
回答 5查看 14.1K关注 0票数 2

如果用户通过身份验证,我只是尝试允许他们访问某个方法,但我所做的似乎都不起作用。有没有办法只检查用户是否已通过身份验证?以下代码即使在通过身份验证时仍会拒绝用户...是否有针对经过身份验证的用户的内置角色?

代码语言:javascript
复制
@RequestMapping("/secure")
@PreAuthorize("hasRole('IS_AUTHENTICATED_FULLY')")
public String secure(ModelMap map){
    return("secure");
}
EN

回答 5

Stack Overflow用户

发布于 2012-07-14 20:46:47

IS_AUTHENTICATED_FULLY不是角色-它是AuthenticatedVoter识别的预定义凭据(也称为“魔术”字符串),用于指示您已登录。此投票者还支持匿名和记住我登录。

角色由RoleVoter处理,它识别任何以"ROLE_“开头的字符串(前缀是可配置的)。因此,hasRole('IS_AUTHENTICATED_FULLY')无法工作,因为它不是一个角色。出于同样的原因,@RolesAllowed("IS_AUTHENTICATED_FULLY")不会工作。

使用Spring表达式语言时,正确的表达式是:

代码语言:javascript
复制
 @PreAuthorize("isAuthenticated()")

或者,您可以使用:

代码语言:javascript
复制
 @Secured("IS_AUTHENTICATED_FULLY")

不需要自定义类-默认情况下,两个投票者都处于启用状态。

票数 14
EN

Stack Overflow用户

发布于 2010-03-27 08:02:25

hasRole('ROLE_USER')是任何经过身份验证的用户的繁体名称。通常,对于不关心人员是否经过身份验证的部分,您将使用ROLE_ANONYMOUS

(稍后添加:)

我认为您将需要实现一个自定义AccessDecisionVoter,只要参数身份验证的isAuthenticated()为真,并且CONFIG_ATTRIBUTEROLE_USER或类似值,它就会始终投票给ACCESS_GRANTED

在此forum discussion中对此进行了进一步的讨论,给出了web.xml和其他配置的详细信息。

票数 1
EN

Stack Overflow用户

发布于 2010-04-06 23:46:19

在自定义UserDetailService实现中,只需在User对象返回之前将角色"IS_AUTHENTICATED_FULLY“添加到该对象即可。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2527198

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档