Spring Security和EnableGlobalMethodSecurity

Cemo

我正在尝试使用带有注释的Spring Security Java配置。基本上,我想结合使用注释方法和静态配置。

http
    .authorizeRequests()
    .anyRequest().authenticated()

@Controller
@RequestMapping({"/version", "/*/version"})
@PermitAll
public class VersionController {
// Implementation
}

不久,我希望这@PermitAll必须优先于其他选民。是否可以在@EnableGlobalMethodSecurity(jsr250Enabled = true)这种情况下使用

Cemo

我稍微改变了看法,开始考虑另一种解决方案。如果我在弹簧安全性启动之前就知道我的控制器,则可以通过处理它们来对其进行配置。基本上,我创建了一个处理器,我的实现的简单出价简化版本是:

@Component
public class PermitAllProcessor {

   private static final Logger logger = LoggerFactory.getLogger(PermitAllProcessor.class);

   @Autowired
   AbstractHandlerMethodMapping abstractHandlerMethodMapping;


   public String[] process() {
      Map<RequestMappingInfo, HandlerMethod> handlerMethods = abstractHandlerMethodMapping.getHandlerMethods();
      ArrayList<String> urls = Lists.newArrayList();
      for(Map.Entry<RequestMappingInfo, HandlerMethod> entry : handlerMethods.entrySet()) {
         PermitAll annotation = getPermitAll(entry.getValue());
         if(annotation != null) {
            Set<String> patterns = entry.getKey().getPatternsCondition().getPatterns();
            urls.addAll(patterns);
         }
      }
      logger.info("Permitted urls as follows: {}",
                    StringUtils.collectionToDelimitedString(urls, ",", "[", "]"));
      return urls.toArray(new String[urls.size()]);
   }

   private PermitAll getPermitAll(HandlerMethod value) {
      PermitAll annotation = value.getMethodAnnotation(PermitAll.class);
      if(annotation == null){
         annotation = value.getBeanType().getAnnotation(PermitAll.class);
      }
      return annotation;
   }
}

基本上

 .authorizeRequests()
    .antMatchers(permitAllProcessor.process()).permitAll()
    .anyRequest().authenticated();

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Spring Security和使用Google登录

来自分类Dev

Spring Security REST和Angular

来自分类Dev

使用MongoDB的Spring Social和Spring Security

来自分类Dev

Spring Security RememberMe和RESTful API

来自分类Dev

Tomcat身份验证和Spring Security

来自分类Dev

在Spring Security和Hibernate中使用jdbcAuthentication

来自分类Dev

测试和生产环境中的Spring Security

来自分类Dev

Spring Security LDAP和记住我

来自分类Dev

Spring Security和AOP问题

来自分类Dev

Grails Spring Security插件和dbconsole

来自分类Dev

使用Google和Spring Security和Spring Social登录

来自分类Dev

Grails 3和Spring Security插件

来自分类Dev

URL和用户上的Spring Security配置

来自分类Dev

Spring Boot ServeletInitializer和Spring Security

来自分类Dev

Spring Session和Spring Security

来自分类Dev

在Spring Security中实现UserDetails和CredentialsContainer

来自分类Dev

Spring Security何时使用WebSecurityConfigurerAdapter和UserDetailsService

来自分类Dev

在Spring Boot中添加Spring Security @EnableGlobalMethodSecurity时,“配置默认Servlet处理需要ServletContext”错误

来自分类Dev

MockMvc和Spring Security-空FilterChainProxy

来自分类Dev

Spring Security和OpenID Connect(OIDC)

来自分类Dev

Spring Security @Secured批注和用户权限

来自分类Dev

Spring Security和API的令牌认证

来自分类Dev

注入和使用Spring Security UserCache

来自分类Dev

Spring Security和REST API?

来自分类Dev

带有@EnableGlobalMethodSecurity的Spring Security AspectJMode不起作用

来自分类Dev

Spring Security和AOP问题

来自分类Dev

Spring MVC和Spring Security版本冲突

来自分类Dev

Spring Security和Angularjs登录

来自分类Dev

Spring Cloud和Spring OAuth2-EnableGlobalMethodSecurity引发AlreadyBuiltException

Related 相关文章

热门标签

归档