gpt4 book ai didi

php - Oauth2 - 在 XX 分钟不活动后实现自动注销

转载 作者:行者123 更新时间:2023-12-04 18:01:28 25 4
gpt4 key购买 nike

我正在使用 bshaffer/oauth2-server-php用于实现 oauth2 服务器的库。

目前,我使用访问 token 对每个请求进行身份验证,并在访问 token 过期时刷新 token ,因此如果刷新 token 未过期,则服务器返回新的访问 token 。如果刷新 token 已过期,则返回以下错误:{"error":"invalid_grant","error_description":"刷新 token 已过期"}, 然后在客户端用户自动注销。

我想用 Oauth2 实现标准的“PHP session 超时”。因此,我的 token 将在上次请求后 XX 分钟后失效(如果同时没有请求),这意味着我将针对每个请求将 token 的有效期延长 XX 分钟。

我希望刷新 token 的过期时间与我上次请求一致,因此在用户不活动 XX 分钟后将返回之前的错误。谁能告诉我实现这个的最佳实践是什么?我想在每个请求的 header 中发送刷新 token 并手动延长它在数据库中的过期时间,但不知道是否足够安全。

这是由 Oauth2 处理的事情,还是不应在使用 API 调用的系统上实现?

此外,我对如何在 oauth2 中处理这种情况感兴趣?

提前致谢。

最佳答案

虽然做自己想做的事不是一个好主意。但是有两种方法可以实现注销功能:

  1. 在 OAuth2 token session_id=xyz 中创建自定义字段。现在将此 session ID 存储在服务器存储中,并带有创建、使用等日期字段。在每个请求中,更新使用的字段。在一定的不活动时间后收到请求后,您会去数据库中检查该 session ID,如果时间结束,则启动注销过程并终止该用户/客户端的所有 session ID,并将用户重定向到登录页面
    1. 颁发 token 时,同时颁发一个加密的 cookie,客户端将随每个请求一起发送。在每个请求中,您将更新 cookie 的读取属性并回复。如果在一定时间结束后收到请求,那么您可以解密 cookie 并确定是否需要使该 cookie 失效。如果是这样,则启动注销过程并使用过期属性更新 cookie/重定向到登录页面。
    2. 可以结合使用上述方法。

关于php - Oauth2 - 在 XX 分钟不活动后实现自动注销,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34681679/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com