如果令牌过期怎么办
What to do if token expired
我已经使用改装与 API 进行了交流。当用户登录时,我将帐户保存到数据库中,当用户下次访问应用程序时,我从数据库中获取数据(所以我跳过了登录屏幕)。问题是用户的令牌何时过期。
如何处理?
在登录片段中
伪代码
user = ... //get user from database
if(user != null) {
startActivityAccountActivity();
}
//onButtonClick
emailLogin();
这取决于您的后端安全级别。您有两种选择来处理这种情况。
在后端建立一些机制,以便您的服务器在登录 Android 设备时发送一些 refresh-token
以及 user's token
。每当用户的令牌过期时,然后从 Android 设备请求您的服务器通过发送 old user's token
和 refresh-token
来获得 new user's token
。您可以在将来使用 new user's token
。每当 user's token
过期时重复此操作。
注意 - refresh-token
用于验证请求 user's token
.
的资源是否有效
您可以从数据库中删除用户帐户并告诉用户重新登录。
不要仅仅因为您保存了令牌就去您的 "logged in" activity,因为正如您正确注意到的那样,它可能无效。当您获得令牌时尝试使用 API 进行身份验证,并且只有在它确实有效时才转到 "logged in" activity 。否则就好像没有保存令牌一样继续(并从数据库中删除过期的令牌)。
您还应注意,当用户处于 "logged in" activity 时,令牌可能会过期。例如,用户登录、使用该应用程序,然后从最近使用屏幕转到另一个应用程序。一周后 he/she returns 打开 "logged in" activity 到您的应用程序,但与此同时令牌已过期并且无法使用。所以你还应该检查令牌是否仍然在那里工作,也许在 activity.
的 onStart()
中
正如indramurari所说,如果你控制它,你也可以在后端处理它。但请记住,它并不能解决您处理过期令牌的固有问题,刷新令牌也可能会过期,您又回到了原点。如果您使刷新令牌不过期,您只需让登录令牌不过期即可。 (这一段是对他的回答的评论,但我没有足够的声誉。)
我已经使用改装与 API 进行了交流。当用户登录时,我将帐户保存到数据库中,当用户下次访问应用程序时,我从数据库中获取数据(所以我跳过了登录屏幕)。问题是用户的令牌何时过期。 如何处理?
在登录片段中 伪代码
user = ... //get user from database
if(user != null) {
startActivityAccountActivity();
}
//onButtonClick
emailLogin();
这取决于您的后端安全级别。您有两种选择来处理这种情况。
在后端建立一些机制,以便您的服务器在登录 Android 设备时发送一些
refresh-token
以及user's token
。每当用户的令牌过期时,然后从 Android 设备请求您的服务器通过发送old user's token
和refresh-token
来获得new user's token
。您可以在将来使用new user's token
。每当user's token
过期时重复此操作。注意 -
的资源是否有效refresh-token
用于验证请求user's token
.您可以从数据库中删除用户帐户并告诉用户重新登录。
不要仅仅因为您保存了令牌就去您的 "logged in" activity,因为正如您正确注意到的那样,它可能无效。当您获得令牌时尝试使用 API 进行身份验证,并且只有在它确实有效时才转到 "logged in" activity 。否则就好像没有保存令牌一样继续(并从数据库中删除过期的令牌)。
您还应注意,当用户处于 "logged in" activity 时,令牌可能会过期。例如,用户登录、使用该应用程序,然后从最近使用屏幕转到另一个应用程序。一周后 he/she returns 打开 "logged in" activity 到您的应用程序,但与此同时令牌已过期并且无法使用。所以你还应该检查令牌是否仍然在那里工作,也许在 activity.
的onStart()
中
正如indramurari所说,如果你控制它,你也可以在后端处理它。但请记住,它并不能解决您处理过期令牌的固有问题,刷新令牌也可能会过期,您又回到了原点。如果您使刷新令牌不过期,您只需让登录令牌不过期即可。 (这一段是对他的回答的评论,但我没有足够的声誉。)