易截截图软件、单文件、免安装、纯绿色、仅160KB

自定义ajax登录的时候出现的问题

我写了个简单的ajaxlogin登录
情况描述
打开2个页面
第一个页面是ajax登录的页面
第二个页面是登录后收保护的页面
登录第一个页面, 打开受保护的页面2, 在第一个页面登出   并刷新第2个页面由于已经登出就会出现跳到拦截页面CAS的login(这是已经把要跳转的页面存在session里了)
然后在第一个登录页面登录由于第一个页面时ajax请求,并且在session中已经存在他要跳转的页面,所以会返回该跳转的页面,ajax中设置了只能接受json对象因此就会出现登录error其实已经登入了
session中存的跳转URL的格式是
 
  session
 
  {SPRING_SECURITY_SAVED_REQUEST_KEY=SavedRequest[http://localhost:8080/AVerPortal/resourceAction/resourceIndex.action]}
其实这是个请求封装即对于页面http://localhost:8080/AVerPortal/resourceAction/resourceIndex.action的请求
由于是自定义ajaxlogin因此当有拦截目标的时候返回的是一个请求不是一个JSON对象。
解决方案:重写源代码中的AbstractProcessingFilter在验证成功时候使用的 RedirectUtils.sendRedirect类:这个方法顾名思义是像页面发送一个对服务器端页面的请求。response.sendRedirect(response.encodeRedirectURL(finalUrl));
改写成:
StringBuffer str = new StringBuffer();
    str.append("{");
    str.append("status: \"true\",");
    str.append("url: \"");
    str.append(finalUrl);
    str.append("\"}");
    response.getWriter().write(str.toString());
注意这里的我原来写成
StringBuffer str = new StringBuffer();
    str.append("{");
    str.append("status: true,");
    str.append("url: ");
    str.append(finalUrl);
    str.append("}");
    response.getWriter().write(str.toString());
结果在前台却得到
   {status: true,url:  http://localhost:8080/AVerPortalTest/resourceAction/resourceIndex.action}
{status: true,url:  http://localhost:8080/AVerPortalTest/resourceAction/resourceIndex.action}
2份JSON对象原因是因为JSON格式,正确格式如下
{
status:"true",
&nbs


相关文档:

Ajax 和 REST,第 1 部分

2006 年 11 月 09 日
服务器端 Web 应用程序因采用富应用程序模型和交付个性化内容而具备了融入式(immersive) 的特点,这种特点越突出,应用程序架构对 Web 架构风格 REST(Representational State Transfer)的违背就越多。这种违背会降低应用程序的可伸缩性,增加系统复杂性。通过与 REST 相互协调,Ajax 架构将使融入 ......

Ajax应用的五个步骤

//Ajax应用的五个步骤
//1.创建XMLHttpRequest对象
var xmlHttp=createXMLHttpRequest();
function createXMLHttpRequest()

 var xmlHttp;
 if(Window.XMLHttpRequest)
 { 
  //IE6以上版本和其他浏览器内置XMLHttpRequest对象
  xmlHttp=new XMLHttpRequest(); ......

ajax 二级联动

function CreateXmlHttp()
{
if(window.ActiveXObject)
{
try
{
XmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e){};

try
{
XmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e){};

}
else if(window.XMLHt ......

用Glassfish和NetBeans编写第一个AJAX程序


By Jason.Huang@sun.COM
,

8/1/07
 
B/S结构的应用似乎已经成为了默认的方式,大家每天开启关闭最多的应用我想应该是您的Web浏览器.B/S结构的应用最大的优点就是方便,客户端什么也
不需要安装就可以使用我们的应用.
当然B/S结构的一些特点也对基于这种方式应用的开发和设计产生了影响.
最典型的问题就是每 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号