Xamarin.iOS / Web API JWT刷新令牌(如果已过期)

时间:2019-09-17 19:30:37

标签: c# api authentication xamarin jwt

我有一个Web API,可为用户提供需要在我的移动应用程序中显示的所有数据。

OWIN JWT Authentication已实现且正在正常运行。有一个端点/oauth2/token为用户提供令牌,并且所有端点都有[Authorize]属性过滤器以对其进行验证。

令牌expiration设置为 5 分钟。

登录会话通过单独的SESSION-ID进行维护,该Keychain存储在Token expiration time中,并且也存储在服务器端以检查活动会话。每次用户在应用程序内部登录时,都会生成一个新令牌,并且用户可以访问API方法来获取数据。

问题

如果用户将应用程序打开超过5分钟([Authorize]),该怎么办?令牌已过期,将不可用,该如何刷新?而我应该何时刷新呢?

我了解了刷新令牌,但不确定如何处理(这是正确的选择吗?),因为如果令牌过期,import overpy import pandas as pd import numpy as np df2 = pd.read_csv("/home/abc/xyz.csv") df2.sort_values(by=['cvdt35_timestamp_s'],inplace=True) df = df2.head(10) api= overpy.Overpass() box = 0.0005 queries = [] with open("xyz.csv") as f: for row in df.index: query = 'way('+str(df.gps_lat_dd.iloc[row]-box)+','+str(df.gps_lon_dd.iloc[row]-box)+','+str(df.gps_lat_dd.iloc[row]+box)+','+str(df.gps_lon_dd.iloc[row]+box)+') ["highway"]; (._;>;); out body;' queries.append(query) 属性只会拒绝我的呼叫,而不会提供过期消息,我不知道它是过期的令牌还是无效的令牌。

1 个答案:

答案 0 :(得分:1)

  

如果用户让应用程序打开超过5分钟该怎么办   (令牌到期时间)?令牌将不可用,因为它具有   过期了,该如何刷新?

如果我理解正确,请设置The token expiration to 5 minutes,这意味着如果用户将应用程序打开超过5分钟,则该令牌不再有效。实际上,用户必须重新登录才能获取新令牌。

所以回到您的问题,在令牌过期的那一刻,我的建议是您可以present the loginPage and tell user that he has to login again to use the app

我不知道是否有另一种方式来获取新令牌,如果有,则可能不必重新登录。

此外,我发现了一个可能有帮助的线程:webapi-2-0-how-to-implement-refresh-jwt-token-when-access-token-expired