【问题标题】:Compare two collections in jhipster比较 jhipster 中的两个集合
【发布时间】: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


【解决方案1】:

你可以试试这两个:

SecurityContextHolderAwareRequestWrapper.isUserInRole(AuthoritiesConstants.ADMIN)

和:

Collection<? extends GrantedAuthority> authorities = SecurityContextHolder.getContext().getAuthentication().getAu‌​thorities();
boolean hasRoleAdmin = authorities.contains(new SimpleGrantedAuthority(AuthoritiesConstants.ADMIN));

【讨论】:

  • 非静态方法 getAuthorities() 无法从静态上下文错误中引用
  • 非静态方法 isUserInRole(String) 也不能从其他静态上下文错误中引用。
  • 如果你改变第二个选项:Collection authority = authentication.getAuthorities();对于收藏 extends GrantedAuthority> authority = SecurityContextHolder.getContext().getAuthentication().getAuthorities();
  • 身份验证身份验证 = SecurityContextHolder.getContext().getAuthentication();收藏 authority = authentication.getAuthorities();
  • 当我这样改变时它可以工作。早些时候,我调用了身份验证而不是身份验证,它是接口。但仍然有一个问题。它不会进入 if (userService.getAuthorities().size() == 1 && userService.getAuthorities().contains(AuthoritiesConstants.Student)) {
猜你喜欢
  • 1970-01-01
  • 2020-04-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-18
  • 1970-01-01
相关资源
最近更新 更多