我只是尝试允许用户访问方法,如果他们经过身份验证,但我正在做的事似乎没有用.有没有办法检查用户是否已通过身份验证?即使经过身份验证,以下内容仍然会拒绝用户...是否有经过身份验证的用户的内置角色?
@RequestMapping("/secure")
@PreAuthorize("hasRole('IS_AUTHENTICATED_FULLY')")
public String secure(ModelMap map){
return("secure");
}
Run Code Online (Sandbox Code Playgroud)
小智 13
IS_AUTHENTICATED_FULLY不是角色 - 它是一个预先定义的凭证(也称为"魔术"字符串)AuthenticatedVoter,表示您已登录.此选民还支持匿名和记住我的登录.
角色由RoleVoter处理,它识别以"ROLE_"开头的任何刺痛(前缀是可配置的).因此hasRole('IS_AUTHENTICATED_FULLY')不起作用,因为它不是一个角色.@RolesAllowed("IS_AUTHENTICATED_FULLY")不会出于同样的原因.
使用Spring表达式语言时,正确的表达式是:
@PreAuthorize("isAuthenticated()")
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用:
@Secured("IS_AUTHENTICATED_FULLY")
Run Code Online (Sandbox Code Playgroud)
不需要自定义类 - 默认情况下都启用两个选民.
| 归档时间: |
|
| 查看次数: |
12575 次 |
| 最近记录: |