ajax用户登陆获取不到session里的验证码

问题描述

今天用ajax做了个用户登陆,事先随机生成的4位验证码存入session里了,但是ajax提交到action时获取不到session里的验证码,action里打印出的验证码是null,但是直接用表单提交登陆的时候能获取session里的验证码,劳烦高手帮助,不甚感激!

解决方案

解决方案二:
在JBOSS中运行试试
解决方案三:
之前学习的时候好像也遇到过,刚才随便写了下,好像没得这个问题,把你代码发上来看看
解决方案四:
代码在哪里呢?
解决方案五:
这不科学代码拿来看看
解决方案六:
session不同步导致的,你是异步登录操作,那么获取session也应该异步。。
解决方案七:
引用5楼ch656409110的回复:

session不同步导致的,你是异步登录操作,那么获取session也应该异步。。

具体应该怎么做
解决方案八:
引用4楼sui2121的回复:

这不科学代码拿来看看

呃,上周五的时候又改成Extjs做了,还是取不到session里的验证码的值。EXt的验证码代码段:newExt.Panel({baseCls:"x-plain",layout:'column',width:290,height:38,items:[{layout:"form",columnWidth:.7,labelWidth:97,items:[{xtype:"textfield",width:90,fieldLabel:"Codingss",name:"image",allowBlank:true,}],},{columnWidth:.3,html:"<ahref='javascript:void(0)'><imgborder='0'src='pages/image.jsp'id='image'onClick='to('pages/login.jsp');'></a>",}],})],buttons:[{text:"Submit",type:"submit",handler:function(){if(form1.form.isValid()){form1.form.submit({waitMsg:"Loging......",url:"login.action",method:"post",success:function(form,action){Ext.Msg.alert("Tips","LoginSuccess!");document.location="index.jsp";},failure:function(form,action){Ext.Msg.alert("Tips",action.result.message);}});}}}

验证码存入session://将认证码存入SESSIONsession.setAttribute("rand",sRand);System.out.println("新的验证码"+sRand);//图象生效g.dispose();OutputStreamoutput=response.getOutputStream();//输出图象到页面ImageIO.write(image,"JPEG",response.getOutputStream());output.flush();out.clear();out=pageContext.pushBody();

action代码://Stringrand=(String)ServletActionContext.getRequest().getSession().getAttribute("rand");Stringrand=(String)ActionContext.getContext().getSession().get("rand");

解决方案九:
引用3楼zy353003874的回复:

代码在哪里呢?

呃,上周五的时候又改成Extjs做了,还是取不到session里的验证码的值。EXt的验证码代码段:newExt.Panel({baseCls:"x-plain",layout:'column',width:290,height:38,items:[{layout:"form",columnWidth:.7,labelWidth:97,items:[{xtype:"textfield",width:90,fieldLabel:"Codingss",name:"image",allowBlank:true,}],},{columnWidth:.3,html:"<ahref='javascript:void(0)'><imgborder='0'src='pages/image.jsp'id='image'onClick='to('pages/login.jsp');'></a>",}],})],buttons:[{text:"Submit",type:"submit",handler:function(){if(form1.form.isValid()){form1.form.submit({waitMsg:"Loging......",url:"login.action",method:"post",success:function(form,action){Ext.Msg.alert("Tips","LoginSuccess!");document.location="index.jsp";},failure:function(form,action){Ext.Msg.alert("Tips",action.result.message);}});}}}

验证码存入session://将认证码存入SESSIONsession.setAttribute("rand",sRand);System.out.println("新的验证码"+sRand);//图象生效g.dispose();OutputStreamoutput=response.getOutputStream();//输出图象到页面ImageIO.write(image,"JPEG",response.getOutputStream());output.flush();out.clear();out=pageContext.pushBody();

action代码://Stringrand=(String)ServletActionContext.getRequest().getSession().getAttribute("rand");Stringrand=(String)ActionContext.getContext().getSession().get("rand");

解决方案十:
怎么放的,还怎么取,用request.getSession().getAttribute("rand")
解决方案十一:
session.getAttribute("rand")呢?
解决方案十二:
引用9楼fangmingshijie的回复:

怎么放的,还怎么取,用request.getSession().getAttribute("rand")

我那段注释掉的代码//String rand=(String)ServletActionContext.getRequest().getSession().getAttribute("rand");就是之前用request取的,不过没有取到
解决方案十三:
session.setAttribute("rand",sRand);System.out.println("新的验证码"+sRand);这两句放到生成验证码最后面。
解决方案十四:
引用12楼fangmingshijie的回复:

session.setAttribute("rand",sRand);System.out.println("新的验证码"+sRand);这两句放到生成验证码最后面。

把那两句放到out = pageContext.pushBody();后面吗
解决方案十五:
引用12楼fangmingshijie的回复:

session.setAttribute("rand",sRand);System.out.println("新的验证码"+sRand);这两句放到生成验证码最后面。

不行,取到的还是null
解决方案:
这个和同步,异步没有关系,建议你装一个fiddler监控一下http的请求,这样分析起来会容易很多,另外补一下http协议相关的知识
解决方案:
断点调试一下,看看是否真的生成了!
解决方案:
你的ajax是不是跨域了,跨域请求的时候,服务器session会发生改变,所以session里面原来存储的验证码的值不存在了,也就为null了
解决方案:
嗯,你的ajax是不是跨域访问

时间: 2024-08-24 06:14:38

ajax用户登陆获取不到session里的验证码的相关文章

使用PHP会话(Session)实现用户登陆功能

对比起 Cookie,Session 是存储在服务器端的会话,相对安全,并且不像 Cookie 那样有存储长度限制,本文简单介绍 Session 的使用. 由于 Session 是以文本文件形式存储在服务器端的,所以不怕客户端修改 Session 内容.实际上在服务器端的 Session 文件,PHP 自动修改 Session 文件的权限,只保留了系统读和写权限,而且不能通过 ftp 修改,所以安全得多. 对 于 Cookie 来说,假设我们要验证用户是否登陆,就必须在 Cookie 中保存用户

jsp内获取session里变量的值

问题描述 jsp内获取session里变量的值 var session_value = '<%=session.getAttribute(""verificationCode"")%>';在jsp页面内 把session_value输出,首次没有值,刷新页面得到首次回话的值 解决方案 你的验证码是通过img加载jsp动态生成的,你执行js赋值时你的图片还么加载完毕,当然没有最新的验证码值 你给img增加onload事件,然后动态往head增加一个scri

使用PHP会话(Session)实现用户登陆功能_php技巧

对比起 Cookie,Session 是存储在服务器端的会话,相对安全,并且不像 Cookie 那样有存储长度限制,本文简单介绍 Session 的使用. 由于 Session 是以文本文件形式存储在服务器端的,所以不怕客户端修改 Session 内容.实际上在服务器端的 Session 文件,PHP 自动修改 Session 文件的权限,只保留了系统读和写权限,而且不能通过 ftp 修改,所以安全得多. 对于 Cookie 来说,假设我们要验证用户是否登陆,就必须在 Cookie 中保存用户名

ajax回调函数获取不到后台session里边的值

问题描述 ajax回调函数获取不到后台session里边的值 解决方案 又是一个没有搞清楚session在哪里的代码.教科书写明,session是服务器端的对象,也就是说,在浏览器端是取不到session的,也就是说,在浏览器端执行的JS代码是不可能调用到服务器端的session对象.所以,你那个alert()是后执行的,在alert执行时,session已经执行完毕,由于u是一个对象,在你使用<%=的方式进行输出时,自动调用toString()方法,如果你没有重写过这个方法,应该是得到一个&quo

Ajax+asp.net实现用户登陆_实用技巧

以用户登录为例练习ajax的使用方法 login.html <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title></title> <sc

Ajax+asp.net实现用户登陆

 这篇文章主要介绍了Ajax+asp.net实现用户登陆,主要是为了练习ajax的使用方法,有需要的小伙伴参考下.     以用户登录为例练习ajax的使用方法 login.html ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55

web 项目 如何获取用户登陆地址

问题描述 web 项目 如何获取用户登陆地址 用户登 入 然后怎么获取用户的登入地址呢 例如爱奇艺的 登陆地判断 解决方案 WEB项目中如何获取ip地址和端口号 解决方案二: 1.登录时,获取登录用户的IP地址: 2.根据获取到的IP地址获取所在地理位置. jsp如何获得客户端的IP地址java根据IP获取用户所在地

使用Session 验证用户登陆后的问题?

问题描述 使用Session验证用户登陆后,其他网页怎样实现网页是否登陆的验证?有什么简单的办法,写个类文件后,其他网页调用,还是用其他什么方法,请来个例子,谢了! 解决方案 解决方案二:使用Session验证用户登录?怎么个验证法?学习下.解决方案三://楼主是要这种效果吗?登陆时,用户名和密码都正确在程序加一行如下的代码:Session["user"]="wzf";在其它页面中的Page_Load事件加下面代码if(Session["user"

Django里自定义用户登陆及登陆后跳转到登陆前页面的实现

因为下一步要和公司的UM帐号作集成,所以分离出登陆模块,及实现其基本功能是必不可少的. 登陆倒容易,但要实现在登陆后,跳转到登陆前的网页,且显示用户的登陆状态,花了点时间查找代码, 测试了五六种方式,终于搞定.连语法都OK啦.. login.html: {% extends "xxxx/index.html" %} {% load staticfiles %} {% block title %}用户登陆 {% endblock %} {% block heading %} <h1