【发布时间】:2018-04-11 16:16:59
【问题描述】:
我需要找出为什么 java 中的 contains 或 equals 方法在我的 jhipster 项目中不起作用?这是在 UserResource.java 中
SecurityContextHolder.getContext().getAuthentication().getAuthorities().contains(AuthoritiesConstants.ADMIN_N);
为此它返回 false 甚至 SecurityContextHolder.getContext().getAuthentication().getAuthorities()= [ROLE_ADMIN] 和 AuthoritiesConstants.ADMIN_N=[ROLE_ADMIN]。方法equals 也不起作用。那么正确的方法是什么?我的 jhipster 版本是 4.8.2。
public final class AuthoritiesConstants {
public static final String ADMIN = "ROLE_ADMIN";
public static final String ADMIN_N = "[ROLE_ADMIN]";
}
【问题讨论】:
-
Authentication.getAuthorities 是 GrantedAuthority 的集合。似乎 ADMIN_N 是 Collection
(或其他东西的集合,但您的标题谈到了比较字符串)。 GrantedAuthority 的集合不可能包含字符串的集合,也不能包含其他任何东西的集合,也不能包含字符串。 -
是的。也许。谢谢。我会更新标题。那么如何比较呢?
-
我不知道,因为你没有说 ADMIN_N 是什么。
-
这是问题中定义的字符串变量。 (AuthoritiesConstants.ADMIN_N=[ROLE_ADMIN])
-
向我们展示定义和初始化这个常量的代码。
标签: java spring-boot gradle spring-security jhipster