繁体   English   中英

Spring MVC防止直接访问的方法

[英]spring mvc prevent direct access a method

我刚开始学习spring mvc3。我发现一个小问题,我的控制器将处理后请求(注册表单)。 但是,如果在地址栏中键入映射​​值(bla3 / save.html),它将执行不应执行的方法。 这就是为什么我需要一个解决方案,如果有人直接键入地址,它应该重定向到其他页面,而不是尝试添加新用户。

@RequestMapping(value = "/save", method = RequestMethod.POST) //save new user
public ModelAndView saveUser(@ModelAttribute("user") User user, BindingResult result){
    userService.addUser(user);  
    return new ModelAndView("redirect:/users.html");
}

如果您直接在地址栏中输入URL,则将是一个GET请求,您可以处理该请求的其他行为,例如,该URL禁止GET或为用户提供空白表单(提交后将调用POST方法)根据。

@RequestMapping(value = "/save", method = RequestMethod.GET)
public ModelAndView saveUser(@ModelAttribute("user") User user, BindingResult result){
    userService.addUser(user);  

}

在您的控制器类中添加此方法。

@RequestMapping(value = "bla3/save", method = RequestMethod.GET)
public ModelAndView saveUser(@ModelAttribute("user") User user, BindingResult result){
    userService.addUser(user);  
...
return new ModelAndView("redirect:/users.html");
}

如果在地址栏中输入映射值(bla3 / save.html)。 该方法将执行。

您只能让方法仅在有特定的标头(如下面的代码)时执行。

 @RequestMapping(value = "/save", method = RequestMethod.POST, headers="X-Requested-With=XMLHttpRequest")

在这种情况下,仅当它是jquery ajax请求时才执行该方法(jQuery自动添加标头)

当然,这只是一种点菜

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM