【发布时间】:2012-10-05 10:51:59
【问题描述】:
我想在我的控制器中使用一些与 built-in expressions provided by Spring Security 类似的 (Java) 方法,例如hasRole([role]) 或 isFullyAuthenticated()。
你知道我在哪里可以找到这些方法以及如何在控制器的 Java 方法中调用它们(我不想使用 Spring EL,我想使用纯 Java)?例如像
SomeStaticSpringSecutityClass.isFullyAuthenticated();
编辑:
SecurityContextHolder.getContext().getAuthentication().isAuthenticated()
实际上并没有真正起作用。如果用户被认证为“匿名”,此方法也返回 true。请参阅上面的 spring 安全文档的链接:
isAuthenticated() 如果用户不是匿名的,则返回 true
相反,您必须使用类似的东西:
public boolean isAuthenticated() {
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
return !(authentication == null || authentication instanceof AnonymousAuthenticationToken);
}
但无论如何:我真的不想再次实现逻辑,这已经在 Spring Security 的某个地方实现了。另外
SecurityContextHolder.getContext().getAuthentication()
没有提供 isFullyAuthenticated() 或 hasRole() 等方法。
【问题讨论】:
标签: java spring spring-security