我想为我的Angular应用强制执行单个用户会话功能,因为我的客户与他们的同事共享一个帐户。
目前的问题,我的实施。正在撤销存储在客户端本地存储中的有效令牌,特别是有效的刷新令牌。
场景是:
问题是用户1仍然有一个有效的刷新令牌。
我无法撤销此刷新令牌。我的Auth API接受有效,我不知道它是用户1还是用户2的刷新令牌。
我是否需要在数据库中开始存储刷新令牌值以解决此问题?我还认为我可以为User1和User2使用不同的JwtAuthKeyBase64,作为使User1的令牌无效的方法,但这似乎不是使用ServiceStack JwtAuthProvider的好方法。
答案 0 :(得分:0)
JWT RefreshToken用于联系Auth服务器以获取新的JWT承载令牌。如果用户仍然具有Access,它将仅返回BearerToken,因此您可以通过填充UserAuth.LockedDate
来锁定用户帐户,这将阻止用户检索新的JWT承载令牌。
如果您想要更多自定义验证,可以implement IUserSessionSource并在GetUserSession()
中抛出异常以返回错误响应而不是JWT承载令牌。