同一个用户异地登陆踢人操作

80 篇文章 0 订阅

我的实现:webSocket

其他实现:

1、http://www.caotama.com/86559.html  

不要使用cookie保持登录。
1.登陆时使用帐号密码登录,后端清除该账户所有token,并新建一个token返回给客户端,客户端存到localStorage
2.别处登录的客户端由于token被系统清除,所以是未登录状态,如果本地有token,则证明异地登录,如果没有token,证明没有登陆过

服务端存一个sessionid,有别处登陆时把sessionid删除,检查不到sessionid就没有登录

这个主要是后台的工作吧,前端只要跟后台商议好当接口返回某一个特殊的状态时,就出现弹出框,然后做相应处理。

我觉得是两个子问题,(1)需要在服务器端记录不同的登录,每次登录分配一个token,同时存储与用户的对应关系,通用地说:user -> [token],你可以控制有多少个token同时存在。 (2)如果某个用户的token多于制定数——你的需求是1——那么应该立即通知通知其它token的客户端,这是如何通知让其尽快下线的问题,解决方案很多啦

2、使用框架:Shiro + SpringBoot + redis   https://blog.csdn.net/shadowTime/article/details/80483377

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Spring Security中实现限制异地登录用户下线,你可以按照以下步骤进行操作: 1. 创建一个自定义的AuthenticationProvider实现类,用于处理认证逻辑。你可以继承`DaoAuthenticationProvider`类,并重写`additionalAuthenticationChecks`方法。 在这个方法中,你可以获取用户登录信息,并将其与数据库中存储的用户信息进行比较。如果发现用户已经在其他地方登录,则可以抛出一个自定义的异常,表示异地登录。 2. 创建一个自定义的`AuthenticationSuccessHandler`实现类,用于处理用户成功登录后的逻辑。在这个类中,你可以检查当前登录用户是否已经在其他地方登录。如果是,则可以采取相应的措施来踢掉之前的登录用户。 3. 在Spring Security的配置类中,配置上述的自定义AuthenticationProvider和AuthenticationSuccessHandler。 你可以通过重写`configure`方法来进行配置,例如: ```java @Configuration @EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter { @Autowired private CustomAuthenticationProvider customAuthenticationProvider; @Autowired private CustomAuthenticationSuccessHandler customAuthenticationSuccessHandler; @Override protected void configure(AuthenticationManagerBuilder auth) throws Exception { auth.authenticationProvider(customAuthenticationProvider); } @Override protected void configure(HttpSecurity http) throws Exception { http .formLogin() .successHandler(customAuthenticationSuccessHandler) .and() .logout() .logoutSuccessUrl("/login") .and() .authorizeRequests() .antMatchers("/admin/**").hasRole("ADMIN") .anyRequest().authenticated(); } } ``` 4. 在自定义的AuthenticationProvider中,你可以使用Spring Security提供的`SessionRegistry`类来获取当前所有活动的用户会话。通过遍历会话列表,你可以找到与当前用户相同的用户,并将其强制下线。 需要注意的是,上述的实现方式是基于Spring Security的Session管理机制。如果你使用了其他的会话管理方式,可能需要相应地修改实现逻辑。此外,为了确保异地登录的准确性,你可能还需要考虑一些边界情况,例如用户主动注销登录和会话过期等。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值