springmvc mybatis 怎么实现同一时间只能一个用户登录
展开全部
demo:
第一个地方登陆:
1.得到请求的SessionId 和 登陆的 用户名
2.把SessionId 存到application里,用户名存到当前session里
ActionContext ac = ActionContext.getContext();
Map<String, Object> applicationMap=ac.getApplication();
Map<String, Object> sesisonMap = ac.getSession();
//请求的sessionId
String currentSeesionId= getRequest().getSession().getId();
applicationMap.put(loanUserE.getUname(), currentSeesionId);
sesisonMap.put(CommonVar.SSO_LOGIN_NAME_KEY,loanUserE.getUname());
第二个地方登陆:
1.获取浏览器的 SessionId 和取得 登陆的用户名
2.在当前的session 里取得 用户名对应的关键字 ,用关键字在application里获取SessionId ,
作比较,不相等就跳到登陆。
拦截器:
/** 初始化参数获得 */
ActionContext actionContext = arg0.getInvocationContext();
/** HttpServletRequest参数 */
HttpServletRequest request = (HttpServletRequest) actionContext.get(StrutsStatics.HTTP_REQUEST);
/** HttpServletResponse参数 */
HttpServletResponse response = (HttpServletResponse) actionContext.get(StrutsStatics.HTTP_RESPONSE);
/** Session参数 */
Map<String, Object> sessionMap = actionContext.getSession();
Map<String, Object> appcationMap = actionContext.getApplication();
String loginName = null;
// 上下文对象中的sessionId
String sessionId = null;
if (!sessionMap.isEmpty()) {
loginName = (String) sessionMap.get(CommonVar.SSO_LOGIN_NAME_KEY);
}
if (null != loginName) {
sessionId = (String) appcationMap.get(loginName);
}
// 当前会话的sessionId
String currentSessionId = request.getSession().getId();
if (!currentSessionId.equals(sessionId)) {
return "loanUserLogin";
}
第一个地方登陆:
1.得到请求的SessionId 和 登陆的 用户名
2.把SessionId 存到application里,用户名存到当前session里
ActionContext ac = ActionContext.getContext();
Map<String, Object> applicationMap=ac.getApplication();
Map<String, Object> sesisonMap = ac.getSession();
//请求的sessionId
String currentSeesionId= getRequest().getSession().getId();
applicationMap.put(loanUserE.getUname(), currentSeesionId);
sesisonMap.put(CommonVar.SSO_LOGIN_NAME_KEY,loanUserE.getUname());
第二个地方登陆:
1.获取浏览器的 SessionId 和取得 登陆的用户名
2.在当前的session 里取得 用户名对应的关键字 ,用关键字在application里获取SessionId ,
作比较,不相等就跳到登陆。
拦截器:
/** 初始化参数获得 */
ActionContext actionContext = arg0.getInvocationContext();
/** HttpServletRequest参数 */
HttpServletRequest request = (HttpServletRequest) actionContext.get(StrutsStatics.HTTP_REQUEST);
/** HttpServletResponse参数 */
HttpServletResponse response = (HttpServletResponse) actionContext.get(StrutsStatics.HTTP_RESPONSE);
/** Session参数 */
Map<String, Object> sessionMap = actionContext.getSession();
Map<String, Object> appcationMap = actionContext.getApplication();
String loginName = null;
// 上下文对象中的sessionId
String sessionId = null;
if (!sessionMap.isEmpty()) {
loginName = (String) sessionMap.get(CommonVar.SSO_LOGIN_NAME_KEY);
}
if (null != loginName) {
sessionId = (String) appcationMap.get(loginName);
}
// 当前会话的sessionId
String currentSessionId = request.getSession().getId();
if (!currentSessionId.equals(sessionId)) {
return "loanUserLogin";
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询