繁体   English   中英

如何使用 go-guardian JWT 策略主动注销用户?

[英]How to actively logoff a user with go-guardian JWT strategy?

我在我的项目中使用带有 JWT“基本承载”策略的 go-guardian 进行身份验证,效果非常好。 当客户端没有令牌时,他使用他的凭据登录并收到 JWT,然后他可以将其用于像这样的进一步请求:

                $.ajax({
                    headers: {
                        'Authorization': 'Bearer ' + token
                    },
                    url: '/api/archive',
                    type: "post",
                    contentType: 'application/json; charset=utf-8',
                    data: JSON.stringify(searchData),
                    dataType: 'json',
                    success: onDataReceived,
                    error: onError
                });

但是,我想知道当客户端点击/auth/logoff路由时如何在服务器端进行主动注销? 当然,客户端可以简单地删除令牌,但服务器仍然会接受它。 如何在服务器端主动使令牌无效或删除,以便我可以安全地说客户端必须重新验证?

您可以保留一个单独的表user_session ,其中 session 还包括用户的令牌。 当端点被命中时,您检查令牌的签名以及该令牌是否在数据库中。

您还需要在用户登录时存储令牌,并在用户注销时删除此令牌。

每个用户需要多个会话的原因是因为用户可能使用多个令牌从不同的设备登录。 要注销用户,您可以从 user_session 中删除该特定user_session或从所有设备注销,您可以删除该用户的所有会话。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM