[英]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.