前阵子做了个java web的项目,里面一个单点登录的功能废了一番功夫,所幸后来经过讨论和百度还是做出来了。以下总结梳理一下我的思路:
1、功能需求:同一用户在不同浏览器或不同IP地址再次登陆时,前一次登陆的用户登陆状态失效,再次做需要登录权限的请求时会跳转到登陆界面。
2、实现思路:
2.1 前端通过ajax提交登陆请求,在LoginAction中判断登陆成功的同时将qname和Sessionid放入session的Attribute中
L oginAciton的部分代码见:
public void loginOk(){
HttpServletResponse res=ServletActionContext.getResponse();
PrintWriter out=null;
String str=null;
try {
out=res.getWriter();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if(qUserBiz.isLoginOk(qname, qpassword)){
HttpServletRequest request=ServletActionContext.getRequest();
session=request.getSession();
//用户ip地址
//String uip=request.getRemoteAddr();
session.setAttribute("qname", qname);//登陆的用户名
System.out.println("将qname"+qname+"放入Session中");
String sid=session.getId();//SessionId
session.setAttribute("sid", sid);
System.out.println("将sid"+sid+"放入Session中");
//session.setAttribute("uip",uip);
//System.out.println("将uip"+uip+"放入Session中");
str= "success";
}else{
str="fail";
}
out.write(str);
out.flus