ajax登录弹簧webMVC和弹簧安全
发布时间:2020-12-16 03:06:46 所属栏目:百科 来源:网络整理
导读:我已经使用Spring Security 3.0作为我们的网站登录机制使用专用的登录网页.现在我需要登录网页,而不是在我们网站上的每个网页上都是一个灯箱/弹出窗口,在登录时,我得到一个AJAX结果,无论是否成功. Spring Security和Spring webmvc 3.0有什么最好的办法? 在
我已经使用Spring Security 3.0作为我们的网站登录机制使用专用的登录网页.现在我需要登录网页,而不是在我们网站上的每个网页上都是一个灯箱/弹出窗口,在登录时,我得到一个AJAX结果,无论是否成功. Spring Security和Spring webmvc 3.0有什么最好的办法?
在客户端,您可以通过ajax模拟正常的表单提交到您的登录URL.例如,在jQuery中:
$.ajax({ url: "${pageContext.request.contextPath}/j_spring_security_check",type: "POST",data: $("#loginFormName").serialize(),beforeSend: function (xhr) { xhr.setRequestHeader("X-Ajax-call","true"); },success: function(result) { if (result == "ok") { ... } else if (result == "error") { ... } } }); 在服务器端,您可以自定义AuthenticationSuccessHandler和AuthenticationFailureHandler以返回值而不是重定向.因为您可能还需要一个正常的登录页面(为了尝试通过直接url访问受保护的页面),您应该从正常调用中通知ajax调用,例如使用头文件: public class AjaxAuthenticationSuccessHandler implements AuthenticationSuccessHandler { private AuthenticationSuccessHandler defaultHandler; public AjaxAuthenticationSuccessHandler() { } public AjaxAuthenticationSuccessHandler(AuthenticationSuccessHandler defaultHandler) { this.defaultHandler = defaultHandler; } public void onAuthenticationSuccess(HttpServletRequest request,HttpServletResponse response,Authentication auth) throws IOException,ServletException { if ("true".equals(request.getHeader("X-Ajax-call"))) { response.getWriter().print("ok"); response.getWriter().flush(); } else { defaultHandler.onAuthenticationSuccess(request,response,auth); } } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |