/**
*
* @ClassName: LoginListenner
* @Description: 登录监听类-处理同一时间只允许账号,单地点登录
* @author mr_smile2014 605051929@qq.com
* @date 2014年11月12日 下午2:23:41
*
*/
public class LoginListenner implements HttpSessionAttributeListener {
/**
* 用于存放账号和session对应关系的map
*/
private Map<String, HttpSession> map = new HashMap<String, HttpSession>();
/**
* 当向session中放入数据触发
*/
public void attributeAdded(HttpSessionBindingEvent event) {
String name = event.getName();
if (name.equals("loginuser")) {
User user = (User) event.getValue();
if (map.get(user.getUserName()) != null) {
HttpSession session = map.get(user.getUserName());
session.removeAttribute(user.getUserName());
session.invalidate();
}
map.put(user.getUserName(), event.getSession());
}
}
/**
* 当向session中移除数据触发
*/
public void attributeRemoved(HttpSessionBindingEvent event) {
String name = event.getName();
if (name.equals("loginuser")) {
User user = (User) event.getValue();
map.remove(user.getUserName());
}
}
public void attributeReplaced(HttpSessionBindingEvent event) {
}
public Map<String, HttpSession> getMap() {
return map;
}
public void setMap(Map<String, HttpSession> map) {
this.map = map;
}
}
/**
* 登录
*
* @param userName
* @param passWord
* @param code
* 验证码
* @param type
* 登陆类型(商户,操作员)
* @param model
* @return
*/
@RequestMapping("/login")
public String login(String account, String passWord, String code,
Model model, HttpServletRequest request) {
//登录验证并返回登录成功用户对象
User user=loginResult(userPhone, passWord, code, request);
//把用户对象放入到session中,将会触发LoginListenner中的attributeAdded事件
request.getSession().setAttribute("loginuser", user);
}
<!--一个用户只能在一个主机登录 -->
<listener>
<listener-class>com.test.listenner.LoginListenner</listener-class>
</listener>
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有