java 客户端怎么实现同一账号第二次登陆将第一次的挤下线_实现同用户登录互挤,将前一个用户挤下线(思路+实现)...

由于对用户数据的安全性考虑,在同一时刻不允许两个相同的用户存在(SSM架构下)。场景,假设 Tom使用了用户1,Joker也是使用了用户1,两人同时对用户1 的相关数据进行了修改,就会造成数据的安全隐患。思路:1.定义一个key-value结构的用户栈,将用户名与sessionId绑定,存入用户栈中2.设置拦截器,拦截请求,判断该用户的sessionId是否与系统中的sessionId一致这里的用...
摘要由CSDN通过智能技术生成

由于对用户数据的安全性考虑,在同一时刻不允许两个相同的用户存在(SSM架构下)。

场景,假设 Tom使用了用户1,Joker也是使用了用户1,两人同时对用户1 的相关数据进行了修改,就会造成数据的安全隐患。

思路:

1.定义一个key-value结构的用户栈,将用户名与sessionId绑定,存入用户栈中

2.设置拦截器,拦截请求,判断该用户的sessionId是否与系统中的sessionId一致

这里的用户栈可以使用ServletContext,其作用域为application,在用户登录成功的时候,将sessionId存入ServletContext,并在拦截过程中,以用户名为Key值判断sessionId的一致性。

实现:

在controller的登录方法dologin中:

@RequestMapping(value="/dologin",method = RequestMethod.POST)publicString dologin(@RequestParam User user,HttpSession session, Model model){//获取ServletContext对象

ServletContext application= session.getServletContext();//查找数据库中的用户信息

User loginUser=userService.login(user);if(loginUser!=null){ //账号密码正确String sessionId= session.getId();

if(application.getAttribute(

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值