相关疑难解决方法(0)

如何使用JavaConfig从Spring Security中删除ROLE_前缀?

我正在尝试删除Spring Security中的"ROLE_"前缀.我尝试的第一件事是:

http.servletApi().rolePrefix("");
Run Code Online (Sandbox Code Playgroud)

这没用,所以我尝试BeanPostProcessorhttp://docs.spring.io/spring-security/site/migrate/current/3-to-4/html5/migrate-3-to-4-中的建议创建一个jc.html#m3to4-role-prefixing-disable.那也行不通.

最后,我尝试创建自己的SecurityExpressionHandler:

  @Override
  protected void configure(HttpSecurity http) throws Exception {
      http
          .authorizeRequests()
          .expressionHandler(webExpressionHandler())
          .antMatchers("/restricted").fullyAuthenticated()
          .antMatchers("/foo").hasRole("mycustomrolename")
          .antMatchers("/**").permitAll();
  }

  private SecurityExpressionHandler<FilterInvocation> webExpressionHandler() {
      DefaultWebSecurityExpressionHandler defaultWebSecurityExpressionHandler = new DefaultWebSecurityExpressionHandler();
      defaultWebSecurityExpressionHandler.setDefaultRolePrefix("");
      return defaultWebSecurityExpressionHandler;
  }
Run Code Online (Sandbox Code Playgroud)

但是,这也不起作用.如果我使用"hasAuthority(roleName)"而不是hasRole,它按预期工作.

是否可以从Spring Security的hasRole检查中删除ROLE_前缀?

spring spring-security spring-java-config

11
推荐指数
5
解决办法
1万
查看次数

不再需要Spring Security ROLE_前缀?

我正在研究如何创建自定义角色前缀,直到我意识到它无关紧要.只要我的db中的角色符合以下内容:

<security:intercept-url pattern="/person/myProfile/**" access= "hasRole('BlaBla')" />
Run Code Online (Sandbox Code Playgroud)

并且它不是示例,在db中我确实设置角色BlaBla进行测试并且它有效.

当我得到不同的行为时,我不喜欢 - 很多人都有设置自定义前缀来创建自定义角色的问题.在这里会发生什么,我应该期待隐藏的岩石吗?

我有3.0.7版本.在我对权限的查询中,我没有"默认"值......是否由版本引起?

roles spring-security prefix

6
推荐指数
1
解决办法
5167
查看次数