我在 ktor 中使用 bearer 和刷新令牌,如下所述https://ktor.io/docs/client-bearer-auth.html
文档中没有提到的是,当需要刷新令牌但刷新令牌也已过期时,ktor 身份验证模块会如何表现。
我想在刷新令牌过期时将用户发送到登录页面,但我不知道该怎么做
我在 ktor 中使用 bearer 和刷新令牌,如下所述https://ktor.io/docs/client-bearer-auth.html
文档中没有提到的是,当需要刷新令牌但刷新令牌也已过期时,ktor 身份验证模块会如何表现。
我想在刷新令牌过期时将用户发送到登录页面,但我不知道该怎么做
HttpClient.kt
您可以创建自定义异常处理程序或使用 Ktor 的插件系统来拦截身份验证失败。当刷新令牌过期时,通过应用的导航系统触发导航到您的登录页面。关键是在刷新失败时在 refreshTokens 块中返回 null,这将导致身份验证失败并停止进一步的请求尝试。
检测过期的刷新令牌:
最好在尝试使用刷新令牌生成新访问令牌时检查其有效期。这可能涉及验证令牌的签名并检查其有效期时间戳。适当回应:
如果刷新令牌无效或已过期,服务器应以 401 未授权或指示令牌问题的特定错误代码/消息进行响应。提示重新认证:
收到错误响应后,客户端应用程序应提示用户重新登录。使刷新令牌无效:
如果您使用持久性存储,则过期或无效的刷新令牌应失效并从数据库或令牌存储中删除。
设置依赖项确保您的 build.gradle.kts 或 pom.xml 中具有身份验证所需的依赖项。