Spring Security 4 @PreAuthorize不支持Http 405 POST

时间:2017-03-02 17:32:27

标签: java spring spring-security

我的弹簧安全@PreAuthorize注释有问题,我在Dao界面中注释了方法,如下所示:

public interface SecurityDao {
    public List<Security> listAll();
    public List<Security> getUserbyId(String id);
    @PreAuthorize("hasRole('ROLE_4')")
    public void addUser(String username, byte securityLevel);
    @PreAuthorize("hasRole('ROLE_4')")
    public void deleteUser(String username);
    @PreAuthorize("hasRole('ROLE_4')")
    public void updateUser(String username, byte securityLevel);
}

这个想法是只有ROLE_4可以添加,删除或更新用户(通过JSP POST表单),这种方法很好,除非小于ROLE_4的用户尝试更新用户,例如,我得到org.springframework.web.servlet.PageNotFound.handleHttpRequestMethodNotSupported Request method 'POST' not supported

我期待403 ...我可以处理自定义页面。

 @RequestMapping(value="/EditUser", method=RequestMethod.POST)
        public ModelAndView editUser(@RequestParam
                String username, byte securityLevel, ModelMap map, boolean isNewUser) {

            if (isNewUser){
                SecDao.addUser(username, securityLevel);
            }else{
                SecDao.updateUser(username, securityLevel);
            }
                    ModelAndView model = new ModelAndView("userManagement");
                    String applicationVersion = applicationInformation.get("version");
                    model.addObject("version", applicationVersion);
                    List<Security> listSec = SecDao.listAll();
                    model.addObject("user", listSec);


                return model;


        }   

我的控制器RequestMethod是POST来处理成功的提交(正如我上面说的那样工作正常)。

我见过类似的问题,但没有答案,有没有人以前经历过这种行为?这是预期的吗?

提前致谢,

亚当

0 个答案:

没有答案