Spring security Spring security@notation for_是否已完全验证?

Spring security Spring security@notation for_是否已完全验证?,spring-security,Spring Security,我只是尝试允许用户访问一个经过身份验证的方法,但我所做的一切似乎都不起作用。有没有办法只检查用户是否已通过身份验证?即使经过身份验证,以下内容仍然拒绝该用户。。。是否有经过身份验证的用户的内置角色 @RequestMapping("/secure") @PreAuthorize("hasRole('IS_AUTHENTICATED_FULLY')") public String secure(ModelMap map){ return("secure"); } hasRole('ROL

我只是尝试允许用户访问一个经过身份验证的方法,但我所做的一切似乎都不起作用。有没有办法只检查用户是否已通过身份验证?即使经过身份验证,以下内容仍然拒绝该用户。。。是否有经过身份验证的用户的内置角色

@RequestMapping("/secure")
@PreAuthorize("hasRole('IS_AUTHENTICATED_FULLY')")
public String secure(ModelMap map){
    return("secure");
}
hasRole('ROLE\u USER')
是任何经过身份验证的用户的传统名称。您通常会使用
ROLE\u ANONYMOUS
来处理您不关心此人是否经过身份验证的部分

(后加:)

我认为您需要实现一个自定义,每当参数身份验证为Authenticated()true,并且
CONFIG\u属性为
ROLE\u USER
或类似属性时,该自定义将始终投票授予
ACCESS\u


本文对此进行了进一步讨论,提供了web.xml和其他配置的详细信息。

在自定义的
UserDetailService
实现中,只需在返回
User
对象之前将角色“完全验证”添加到该对象中。

这就是我最终使用的:

@PreAuthorize("isAuthenticated()")

是否经过身份验证\u完全
不是一个角色-它是一个预定义的凭证(也称为“魔术”字符串),由
身份验证投票者识别,以指示您已登录。此投票者还支持匿名和记住我登录

角色由RoleVoter处理,RoleVoter识别以“ROLE_”(前缀可配置)开头的任何叮咬。因此,
hasRole('IS\u AUTHENTICATED\u FULLY')
不起作用,因为它不是角色
@RolesAllowed(“已完全验证”)
出于同样的原因不起作用

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

 @PreAuthorize("isAuthenticated()")
或者,您可以使用:

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

这应该可以:

@PreAuthorize("isFullyAuthenticated()")

我使用的是默认ldap身份验证提供程序,没有角色映射。当用户通过身份验证时,我可以在日志中看到:“[DEBUG,DefaultLdaAuthoritiesPopulator]来自搜索的角色:[]”与搜索ldap目录相比,有没有一种方法可以简单地为任何经过身份验证的用户设置角色?