如何在控制器中以编程方式实现Spring Security SpEL isFullyAuthenticated()?
我有一个控制器,我想在其中检查一个完全经过身份验证的用户是否与Spring Security如何在控制器中以编程方式实现Spring Security SpEL isFullyAuthenticated()?,spring,spring-mvc,spring-security,Spring,Spring Mvc,Spring Security,我有一个控制器,我想在其中检查一个完全经过身份验证的用户是否与Spring SecurityisFullyAuthenticated()expression提供的类似。我该怎么做 我使用的解决方案基于下面的Tomasz Nurkiewicz答案,只是从org.springframework.security.access.expression.SecurityExpressionRoot窃取了实现 public class SpringSecurityUtils { private s
isFullyAuthenticated()
expression提供的类似。我该怎么做
我使用的解决方案基于下面的Tomasz Nurkiewicz答案,只是从org.springframework.security.access.expression.SecurityExpressionRoot窃取了实现
public class SpringSecurityUtils {
private static final AuthenticationTrustResolver trustResolver = new AuthenticationTrustResolverImpl();
public static boolean isFullyAuthenticated()
{
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
return !trustResolver.isAnonymous(authentication) && !trustResolver.isRememberMe(authentication);
}
}
查看和的源代码,您可以使用以下条件:
public boolean isFullyAuthenticated(Authentication auth) {
return !(auth instanceof AnonymousAuthenticationToken ||
auth instanceof RememberMeAuthenticationToken);
}
通过以下方式获得身份验证:
SecurityContextHolder.getContext().getAuthentication()
您可以使用以下字符串调用SecurityContextHolderAwareRequestWrapper的方法或HttpServletRequest
:
事实并非如此isUserInRole()
仅根据身份验证
对象的权限列表检查提供的字符串IS\u AUTHENTICATED\u Full
是一个属性,由AuthenticatedVoter
使用,这是另一回事。@Luke我真的希望SpringSecurity会添加一些公共API来做与Spring Security SPEL Expressions等效的事情!如果你们还没有一个请求,我很乐意为JIRA添加一个请求:)
request.isUserInRole("IS_AUTHENTICATED_FULLY");