java 单点登录

来源:互联网 发布:redis 查询当前数据库 编辑:程序博客网 时间:2024/06/02 05:29

java 单点登录

LoginListenner类

/** *  * @ClassName: LoginListenner * @Description: 登录监听类-处理同一时间只允许账号,单地点登录 * @date 2017年3月30日13:19:19 *  */public class LoginListenner implements HttpSessionAttributeListener {    /**     * 用于存放账号和session对应关系的map     */    private Map<String, HttpSession> map = new HashMap<String, HttpSession>();    /**     * 当向session中放入数据触发     */    @Override    public void attributeAdded(HttpSessionBindingEvent event) {        String name = event.getName();        if (name.equals("singleUser")) {            User user = (User) event.getValue();            if (map.get(user.getName()) != null) {                HttpSession session = map.get(user.getName());                session.removeAttribute(user.getName());                session.invalidate();            }            map.put(user.getName(), event.getSession());        }    }    /**     * 当向session中移除数据触发     */    @Override    public void attributeRemoved(HttpSessionBindingEvent event) {        String name = event.getName();        if (name.equals("singleUser")) {            User user = (User) event.getValue();            map.remove(user.getName());        }    }    @Override    public void attributeReplaced(HttpSessionBindingEvent event) {    }    public Map<String, HttpSession> getMap() {        return map;    }    public void setMap(Map<String, HttpSession> map) {        this.map = map;    }}

web.xml文件

  <listener>    <listener-class> cn.com.admin.test.listenner.LoginListenner</listener-class>  </listener>

登录请求方法需要修改的地方:

//把用户对象放入到session中,将会触发LoginListenner中的attributeAdded事件request.getSession().setAttribute("singleUser", user);
原创粉丝点击