我有非常有趣的问题。我正在为我的Web应用程序登录页面,并通过AJAX发送登录请求。如果成功,我想转发用户到另一个页面。Spring MVC 3,使用Ajax时转发不工作
看来他是发生了什么事。我发送Ajax请求,控制器转发我需要视图(我看到登录调试模式),但我留在同一页面,因为我认为该页面正在等待AJAX响应,并因此转发不会发生。
我认为这也是错误的方法来解决这个问题,但因为我对这个不熟悉。我如何登录并将用户转发到下一页。
谢谢。
这里是我的代码:
JS代码:
Page.authenticate = function() {
$.ajax({
url: "/login/authenticate/" + $('#username').val() + "/" + $('#password').val(),
type: "GET",
success: function(poi){
// alert("nesto");
}
});
return true;
}
控制器类:
@Controller
public class LoginPageController {
private Logger logger = Logger.getLogger(this.getClass());
@Autowired
private UserManagement userManagement;
@RequestMapping(value="/login/authenticate/{username}/{password}", method=RequestMethod.GET)
public String authenticate(@PathVariable("username") String userName, @PathVariable("password") String password, Model model) {
if (userManagement.authenticateUser(userName, password)) {
String forward = "forward:/login/success";
return forward;
} else {
model.addAttribute("errorMessage", "Invalid Username/Password, please try again!");
return "/";
}
}
}
你可能想看看Spring Security的,这是SpringSource的认证/授权开发了一个成熟的框架。 – abalogh 2011-06-14 10:54:00
谢谢,它看起来像一个很好的框架来保护你的应用程序。但是我仍然需要这个转发才能工作:) – 2011-06-14 11:06:12
如果你使用Spring Security,你将不需要处理这个问题,因为它会被自动处理。 – abalogh 2011-06-14 11:24:21