我是Spring Security和Spring MVC的新成员,使用jQuery。我的Spring Security是基于Spring Security参考文档的基本设置。我使用的是Spring 3.2.4。使用SpringMVC和jQuery的Ajax安全性
select username,password,enabled
from user
where username = ?
SELECT R.ID, R.NAME, P.NAME
FROM ROLE R
JOIN USER_ROLE UR on R.id = UR.role_id
JOIN USER U on U.id = UR.user_id
JOIN ROLE_PERMISSION RP ON RP.role_id = R.id
JOIN PERMISSION P ON P.id = RP.permission_id
WHERE U.username=?
正常情况下,一切运行正常。我可以通过jQuery.ajax请求我的页面,我的回调按预期工作。但是,我不知道如何设置以处理会话超时或未经授权的访问响应。
例如,如果会话超时,并且我继续发出Ajax请求,Spring Security会将呼叫重定向到登录页面。所以对Ajax请求的响应最终成为登录页面。在客户端,我需要能够知道用户不再访问请求的页面并采取适当的行动 - 即:将浏览器重定向到登录/错误页面。如果用户没有访问网址的权限,则也是如此。
我发现了类似的帖子,涉及如何通过ajax配置登录,但无法理解如何通过ajax处理未经授权的请求。我假设在Ajax调用的情况下,服务器应该返回一个特定的状态代码(例如401未授权的等),并让JS处理差异代码,但不知道在哪里/如何配置该信息。
我试过看AuthenticationFailureHandler和AuthenticationSuccessHandler类,但它们似乎甚至不能用于我的配置(设置它们的断点甚至没有命中),所以我真的很难理解什么/如何/在哪里配置必要的处理程序/过滤器/等。
2014-01-15
Eric B.