Java 直接使用back spring security';s内置表达式

Java 直接使用back spring security';s内置表达式,java,spring,spring-security,Java,Spring,Spring Security,我想在我的控制器中使用一些类似于hasRole([role])或isfullyaauthenticated()的(Java)方法 您知道在哪里可以找到这些方法,以及如何在控制器的Java方法中调用它们吗(我不想使用Spring EL,我想使用普通Java)?例如 SomeStaticSpringSecutityClass.isFullyAuthenticated(); 编辑: 事实上,这不起作用。如果用户被认证为“匿名”,则此方法也返回true。请参见上面指向spring安全文档的链接: 如果

我想在我的控制器中使用一些类似于hasRole([role])或isfullyaauthenticated()的(Java)方法

您知道在哪里可以找到这些方法,以及如何在控制器的Java方法中调用它们吗(我不想使用Spring EL,我想使用普通Java)?例如

SomeStaticSpringSecutityClass.isFullyAuthenticated();
编辑:

事实上,这不起作用。如果用户被认证为“匿名”,则此方法也返回true。请参见上面指向spring安全文档的链接:

如果用户不是匿名的,isAuthenticated()返回true

相反,你必须使用这样的东西:

public boolean isAuthenticated() {
    Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
    return !(authentication == null || authentication instanceof AnonymousAuthenticationToken);
}
但无论如何:我真的不想再次实现逻辑,它已经在SpringSecurity中的某个地方实现了。另外

SecurityContextHolder.getContext().getAuthentication()
未提供isFullyAuthenticated()或hasRole()等方法。请查看。例如,检查当前用户是否经过身份验证:

SecurityContextHolder.getContext().getAuthentication().isAuthenticated()

我找到了使用该接口的
SecurityContextHolderAwareRequestFilter

AuthenticationTrustResolver.isAnonymous(Authentication authentication);
如果要使用Spring源代码,可以检查实例化此接口的类
SecurityContextHolderAwareRequestWrapper
,如下所示:

private final AuthenticationTrustResolver authenticationTrustResolver = new AuthenticationTrustResolverImpl();

public Authentication getAuthentication() {
    if (!authenticationTrustResolver.isAnonymous(auth)) {
        return auth;
    }
    return null;
}

我查阅了文档,但没有找到一个实用程序类来完成这项工作。

仔细处理它,对于匿名用户来说也是如此
private final AuthenticationTrustResolver authenticationTrustResolver = new AuthenticationTrustResolverImpl();

public Authentication getAuthentication() {
    if (!authenticationTrustResolver.isAnonymous(auth)) {
        return auth;
    }
    return null;
}