【问题标题】:After changing the username,Logout the application from all devices更改用户名后,从所有设备注销应用程序
【发布时间】:2016-01-07 07:05:14
【问题描述】:

在我的应用程序中,用户可以更改他们的用户名。如果用户更改了他们的用户名方式,则特定用户帐户应从所有设备中注销。 即使在移动应用程序中也是如此。

为此我做了以下事情,

  • 更改用户名后,我将删除服务器中特定用户名的access_tokenrefresh_token

    Collection<OAuth2AccessToken> tokenCollection = tokenStore.findTokensByUserName(principal.getName());
    
    
    for (OAuth2AccessToken oToken : tokenCollection){
        tokenStore.removeAccessToken(oToken);
        tokenStore.removeRefreshToken(oToken.getRefreshToken());
    }         
    
  • 如果用户从移动应用程序访问,首先我会检查 access_token 是否无效,然后我会检查 refresh_token。如果两者都无效,我会将用户重定向到登录页面。 在移动应用中运行良好

但如果用户通过PC方式登录,则需要处理以下情况。

场景是: - 手机App修改用户名后,如果用户在PC上进行任何活动,会报“500 Internal Server Error”“XML description of authentication failed”。 p>

如何处理?请帮忙解决这个问题。

【问题讨论】:

  • 信息不足。您的应用程序是无状态的吗?如果是普通的面向会话的web应用,需要销毁会话。
  • 我的应用程序只有普通的面向会话的 Web 应用程序。我想知道如何销毁会话?哪里需要销毁会话(在浏览器或服务器端)?请给出解决方案。
  • session.invalidate();应该在服务器端执行。

标签: java android spring spring-security mobile-application


【解决方案1】:

考虑一下...

  1. 创建一个包含用户状态的数据库/表。
  2. 更改用户名时,更新数据库中最新用户的状态。
  3. 每次用户登录时,从数据库/表中检查用户状态。
  4. 然后向用户显示适当的消息以开始新的活动或类似的事情。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-16
    • 2015-09-01
    • 2017-06-17
    • 1970-01-01
    • 2022-10-09
    • 2016-08-07
    • 2019-09-20
    • 1970-01-01
    相关资源
    最近更新 更多