当前位置: 首页 > 知识库问答 >
问题:

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

顾俊誉
2023-03-14

我正在尝试删除Spring Security中的“role_”前缀。我尝试的第一件事是:

http.servletApi().rolePrefix("");
  @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;
  }

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

共有1个答案

谢修真
2023-03-14

从Spring4.2开始,您可以使用单个bean定义前缀,如下所述:https://github.com/spring-projects/spring-security/issues/4134

@Bean
GrantedAuthorityDefaults grantedAuthorityDefaults() {
    return new GrantedAuthorityDefaults(""); // Remove the ROLE_ prefix
}

XML版本:

<beans:bean id="grantedAuthorityDefaults" class="org.springframework.security.config.core.GrantedAuthorityDefaults">
    <beans:constructor-arg value="" />
</beans:bean>
 类似资料:
  • 问题内容: 我正在尝试在Spring Security中删除“ ROLE_”前缀。我尝试的第一件事是: 那没有用,所以我尝试按照http://docs.spring.io/spring-security/site/migrate/current/3-to-4/html5/migrate-3-to-4-的建议创建一个jc.html#m3to4-role-prefixing-disable。那也不起作

  • 我正在我的控制器中检查一个角色“XXXXX”。但它只有在我添加前缀时才有效。 安全(“XXXXX”)不起作用,但当我添加

  • 问题内容: 我已经做过了,但是没有用。每当我访问它时,它都会转到。代码在这里给出: *我也添加了 *更新,但没有区别。另外,让我告诉您,我正在地址栏中输入地址,然后按Enter。我说的对吗?浏览器如何发现它不需要从服务器刷新? 更新#2 理想的情况是我想要的网址为和到。现在给出404 更新#3 我正在使用nginx代理,如果有帮助的话。 更新#4 擦除的缓存。现在我可以看到,而不是,但仍给404

  • 我想删除X-Span-Export:“true”,“X-B3-SpanId”:“40bcdc1c4fcdb9c0”,“X-B3-TraceId”:“40bcdc1c4fcdb9c0”} 形成我的日志。 我已经添加了下面的配置application.yml但没有帮助。 一个pplication.yml spring:应用程序:名称:应用程序名称配置文件:dev sleuth:采样器:概率:1.0日志

  • 问题内容: 在每行末尾添加\ n,结束程序正常工作,仅在最后一行工作… 请举个例子,我在任何解决方案中都尝试不了什么,而我发现这里不适合我。 问题答案: 您可以分割最后一个字符: 也许更好的方法是使用字符串库:

  • 问题内容: 如何从静态页面的网址中删除? 另外,我需要将任何网址重定向到没有该网址的网址。(即到)。 问题答案: 感谢您的答复。我已经解决了我的问题。假设我的页面在下,则适用以下.htaccess 规则。