小编pet*_*gon的帖子

凭据错误的 POST 请求返回 405 而不是 401

我正在尝试在 Spring 中创建由 Spring Security 保护的新 POST 端点。端点正在工作。如果我提供正确的数据和凭据,服务器会处理该请求并返回 200。如果我提供不正确的凭据,我会收到 405,我预计会返回 401。

我发现了与我的问题类似的东西,但我认为这不是我的情况。同样的问题没有回应。

我还尝试将控制器的请求方法从 POST 更改为 GET,并将请求从 POST 更改为 GET,它成功了!如果凭据错误,则会收到 401;如果凭据正确,则会收到 200。

这是我的配置:

控制器

@Controller
@RequestMapping(value = "/api/v1")
@Secured(UserRoles.ROLE_USER)
public class ApiController {

    @RequestMapping(value = "/test", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
    @ResponseStatus(value = HttpStatus.OK)
    @ResponseBody
    public ResponseEntity<String> handleRequest(@RequestBody DataBody dataBody, Model model, Locale locale) {
        try{
            //do something
            return new ResponseEntity<>("received", HttpStatus.OK);
        } catch (SomeProblemException e) {
            return new ResponseEntity<>(e.toString(), HttpStatus.BAD_REQUEST);
        }
    }
Run Code Online (Sandbox Code Playgroud)

安全上下文

    <!-- In …
Run Code Online (Sandbox Code Playgroud)

java spring spring-security

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

标签 统计

java ×1

spring ×1

spring-security ×1