• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

【小程序分享篇二】web在线踢人小程序,维持用户只能在一个台电脑持登录状态 ...

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

最近离职了, 突然记起来还一个小功能没做, 想想也挺简单,留下代码和思路给同事做个参考。

 

换工作心里挺忐忑, 对未来也充满了憧憬与担忧。(虽然已是老人, 换了N次工作了,但每次心里都和忐忑)。

 

写写代码反而心里平静了很多。

 

入正题,上思路,其实很简单

 

一 场景

 

用户u1只能在A电脑登录,当在B电脑登录时,A电脑登录状态被取消

 

二 思路

 

1.创建一个session监听器去监听session属性的创建

2,用个map储存(如果用户量大可以用KV数据库,如redis之类),K 为用户名, V为session的

3. 当检测到session的属性 userName添加时,把对应的session中userName属性清空

 

 

三 主要代码

package com.he.login;

import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionAttributeListener;
import javax.servlet.http.HttpSessionBindingEvent;
/**
 * 用于监听session属性的添加
 * 
 * @author 何锦彬    QQ 277803242
 *
 */
public class LoginListener implements HttpSessionAttributeListener {
    // 已经登录用户session
    public static Map<String, HttpSession> loginedUser = new HashMap<String, HttpSession>();

    public void attributeAdded(HttpSessionBindingEvent eventAdd) {
        // TODO 监听session属性的添加
        String attrName = eventAdd.getName();
        // 监听到为属性userName的添加
        if ("userName".equals(attrName)) {
            String value = (String) eventAdd.getValue();
            HttpSession session = loginedUser.get(value);
            if (session != null) {
                session.removeAttribute(attrName);
            }
            loginedUser.put(value, eventAdd.getSession());
        }

    }

    public void attributeRemoved(HttpSessionBindingEvent arg0) {
        // TODO Auto-generated method stub

    }

    public void attributeReplaced(HttpSessionBindingEvent arg0) {
        // TODO Auto-generated method stub

    }

}

 

四,效果

可以用chrome模拟A电脑, IE模拟B电脑

第一次用chrome 登录,显示成功,刷新还是成功

第二次用IE登录,成功

此时chrome再次刷新,返回登录页面

 

整个项目代码地址 

https://github.com/bensonHe/LoginOnlyOne

下下来访问

http://localhost:端口/LoginOnlyOne


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
微信小程序之tabBar和navigator一起使用的问题发布时间:2022-07-18
下一篇:
phpAEScbc模式pkcs7128位加密解密(微信小程序)发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap