spring - "Request method ' POST ' not supported"放置安全注释后

标签 spring spring-mvc spring-security annotations

我有 2 个 Controller :

一)

@Override
@RequestMapping(value = "/portal/form.html", method = RequestMethod.GET)
@Transactional
public String form(final Message message, final Model model) {
    return "portal/form";
}

二)

@Override
@RequestMapping(value = "/portal/form.html", method = RequestMethod.POST)
@Transactional
@PreAuthorize("#message.id!=null ? hasPermission(#message, 'WRITE') : hasRole('ROLE_ADMIN')") 
public String form(@Valid final Message message, final Model model) {
    if (message.getId() == null) {
        someService.save(message);
        AclManager.create(message);
    } else {
        someService.update(message);
        AclManager.update(message);
    }
    return "redirect:result.html";
}

在我将安全注释放入 Controller “b”之前,一切都很好。 现在,当我转到 Controller “a”的页面并填写表格时,单击导致 Controller “b”的按钮,我得到“HTTP 状态 405 - 不支持请求方法‘POST’”。 为什么会发生这种情况以及如何解决?

UPD:我帮助添加到登录 Controller RequestMethod.POST

最佳答案

如果没有您的 spring 安全配置很难调试,但我猜当您转到/portal/form.html spring 将您重定向到使用 HTTP POST 的登录页面,而您的登录页面 Controller 处理程序仅映射到 HTTP GET .尝试将登录页面处理程序映射到 POST 方法。

关于spring - "Request method ' POST ' not supported"放置安全注释后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17476394/

相关文章:

java - Spring Security - Wss4jSecurityInterceptor - 空指针

java - Spring 4 websocket 和 stomp - 未到达 Controller

java - session.get() 无法解析字段、参数

json - 如何在 spring 3.1 中使用 RESTful webservice 获取 JSON 响应

java - 如何加载两个ResourceBundle并分别注入(inject)

java - servletContext.getRealPath ("/") 在 Windows 上没有给出 Tomcat 8.0.44 所需的路径

java - 在 Spring Boot 中实现 'logout' 功能

java - 使用 Spring Security 限制并发 session 并向用户提供正确的消息

java - 为什么 IntelliJ 能够看到我的应用程序上下文,但当我运行测试时他们却看不到它?

mysql - HBM Hibernate 多对多双向连接与额外列