Spring security不适用于其他帖子网址[重复]

Posted

技术标签:

【中文标题】Spring security不适用于其他帖子网址[重复]【英文标题】:Spring security not working for additional post url [duplicate] 【发布时间】:2021-09-23 20:04:50 【问题描述】:

我没有为这个问题找到满意的答案。

我的安全配置到目前为止一直运行良好。

我想再添加一个POST url,所有人都可以访问。

虽然其他排除的网址运行良好,但添加的额外添加的网址不起作用。

我的代码:

@Override
protected void configure(HttpSecurity http) throws Exception 
    http.cors()
        .and()
        .csrf().disable()
        .authorizeRequests()
        .antMatchers(HttpMethod.POST, "/ws/**").authenticated()
        .antMatchers(HttpMethod.DELETE, "/**").authenticated()
        .antMatchers(HttpMethod.OPTIONS, "/**").permitAll()
        .antMatchers(HttpMethod.GET, "/ws/getEvents").permitAll()// ---> While this is working
        .antMatchers(HttpMethod.POST, "/ws/persons/createNotificationsSubscriber*").permitAll()// -->this not working
        .anyRequest().authenticated()
        .and()
        .logout()
        .logoutSuccessUrl("http://localhost:3006/eventsMainView")
        .and()
        .csrf().disable()
        .httpBasic();

【问题讨论】:

【参考方案1】:

这里的问题是

.antMatchers(HttpMethod.POST, "/ws/**").authenticated()

表示使用 POST 请求验证从 /ws 开始的所有 URL,但

.antMatchers(HttpMethod.POST,"/ws/persons/createNotificationsSubscriber*").permitAll() // --> this not working

这从相同的 /ws 开始,它是一个 POST 请求,所以 Spring 不允许这样做

要完成你的工作,请使用这个-

@Override
protected void configure(HttpSecurity http) throws Exception 
    http.cors()
        .and()
        .csrf().disable()
        .authorizeRequests()
        .antMatchers(HttpMethod.POST, "/ws/persons/createNotificationsSubscriber*").permitAll()// --> This will work
        .antMatchers(HttpMethod.POST, "/ws/**").authenticated()
        .antMatchers(HttpMethod.DELETE, "/**").authenticated()
        .antMatchers(HttpMethod.OPTIONS, "/**").permitAll()
        .antMatchers(HttpMethod.GET, "/ws/getEvents").permitAll()// ---> While this is working
        
        .anyRequest().authenticated()
        .and()
        .logout()
        .logoutSuccessUrl("http://localhost:3006/eventsMainView")
        .and()
        .csrf().disable()
        .httpBasic();

【讨论】:

谢谢,它有效。我的主要逻辑是说最后一行将被排除,但现在我看到它正在使用第一个匹配项,就像路由一样。

以上是关于Spring security不适用于其他帖子网址[重复]的主要内容,如果未能解决你的问题,请参考以下文章

带有 Spring Security 核心和 CORS 插件的 grails REST API 不适用于 OPTIONS http 方法请求

thymeleaf extras security 不适用于 spring Security

Spring Security permitAll 不适用于某些端点

Spring security Principal 不适用于@PostConstruct

Spring Security Logout 不适用于 Spring 4 CORS

@ModelAttribute 不适用于 Spring Security