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