当前位置: 技术问答>java相关
请教如何通过sessionId得到session对象,并使之失效。
来源: 互联网 发布时间:2015-09-16
本文导语: 小弟现在做一个身份认证的程序,为了避免一个用户同时登陆多次,想这个用户第二次登陆时把他第一次登陆时建立的session失效,所以要得到他第一次登陆时的session对象, 我这样做的: String SessionId = "";//"从数据...
小弟现在做一个身份认证的程序,为了避免一个用户同时登陆多次,想这个用户第二次登陆时把他第一次登陆时建立的session失效,所以要得到他第一次登陆时的session对象,
我这样做的:
String SessionId = "";//"从数据库中得到";
HttpSessionContext SessCon= request.getSession(false).getSessionContext();
HttpSession Sess = SessCon.getSession(SessionId);
Sess.InValidate();//这个函数的具体名字在发问的时候忘了
上面的代码在jsp中运行,出现错误,说我使用了该批判的method getSession(String id),我不知道该如何是好。大家帮帮忙吧,你们做过类似项目没有?你们是如何实现这个问题的?
我这样做的:
String SessionId = "";//"从数据库中得到";
HttpSessionContext SessCon= request.getSession(false).getSessionContext();
HttpSession Sess = SessCon.getSession(SessionId);
Sess.InValidate();//这个函数的具体名字在发问的时候忘了
上面的代码在jsp中运行,出现错误,说我使用了该批判的method getSession(String id),我不知道该如何是好。大家帮帮忙吧,你们做过类似项目没有?你们是如何实现这个问题的?
|
我觉得session之间是相互独立的,从一个session或request对象中取得另一个session对象好像不太可能。如果要我做的话,我会选择用application对象。
|
现在由于安全的原因,已经不再支持这种方法了。
可以设想一下,用户的一些信息都保存在Session中,我们在开发时留个后门,用户的资料就可以到我们手中了(他的密码,信用卡号..)。
本来可以通过Interface HttpSessionContext
但是现在:Deprecated. As of Java(tm) Servlet API 2.1 for security reasons, with no replacement. This interface will be removed in a future version of this API.
可以设想一下,用户的一些信息都保存在Session中,我们在开发时留个后门,用户的资料就可以到我们手中了(他的密码,信用卡号..)。
本来可以通过Interface HttpSessionContext
但是现在:Deprecated. As of Java(tm) Servlet API 2.1 for security reasons, with no replacement. This interface will be removed in a future version of this API.
|
用getAttribute(String id);
|
String uid = (String)session.getValue("uid");
session.invalidate();
session.invalidate();
|
HttpSession Sess = SessCon.getAttribute(SessionId);