1

我正在构建一个用户注册表单。我有POST注册端点,我能够成功注册。

我有另一个端点/invalid-token,它也映射到POST映射。我已将两个端点添加到permitAll规则中,如下所示:

 http.authorizeRequests()
     .antMatchers(
         "/register",
         "/confirm",
         "/invalid-token",
         "/registration-success")
     .permitAll()
     .anyRequest()
     .authenticated();

当我从浏览器POST向 发出请求时invalid-token,我得到一个403. 我不明白我哪里出错了。

Response Status:
        General:
        Request URL: http://localhost:8081/invalid-token
        Request Method: POST
        Status Code: 403 
        Remote Address: [::1]:8081
        Referrer Policy: no-referrer-when-downgrade



  Cache-Control: no-cache, no-store, max-age=0, must-revalidate
   Content-Length: 0
   Date: Tue, 23 Apr 2019 05:14:30 GMT
   Expires: 0
   Pragma: no-cache
   X-Content-Type-Options: nosniff
   X-Frame-Options: DENY
   X-XSS-Protection: 1; mode=block
4

1 回答 1

3

我建议您在定义微服务时遵循标准 API 定义。

问题可能是您定义的模式,即/invalid-token

CSRFdisable起作用是因为在您的 API URL 中,该模式/invalid-token具有我猜 SpringSecurity 允许的特殊字符。

当启用 CSRF 时,某些方式-会导致 Spring Security 将其标记为 403。

您可以尝试使用模式/invalid/token,甚至启用 CSRF,它应该会获得所需的行为。

于 2019-04-23T07:23:38.077 回答