C# Xamarin.iOS/Web API JWT刷新令牌(如果到期)
我有一个C# Xamarin.iOS/Web API JWT刷新令牌(如果到期),c#,api,authentication,xamarin,jwt,C#,Api,Authentication,Xamarin,Jwt,我有一个webapi,它为用户提供了需要在我的移动应用程序上显示的所有数据 OWIN JWT身份验证已实现且工作正常。有一个端点/oauth2/token为用户提供一个令牌,所有端点都有[Authorize]属性过滤器来验证它 令牌expiration设置为5分钟 登录会话通过一个单独的会话ID进行维护,该ID存储在钥匙链中,也存储在服务器端以检查活动会话。每次用户登录应用程序时,都会生成一个新的令牌,用户可以访问API方法来获取数据 问题 如果用户让应用程序保持打开状态超过5分钟(令牌过期时间
webapi
,它为用户提供了需要在我的移动应用程序上显示的所有数据
OWIN JWT身份验证已实现且工作正常。有一个端点/oauth2/token
为用户提供一个令牌,所有端点都有[Authorize]
属性过滤器来验证它
令牌expiration
设置为5分钟
登录会话通过一个单独的会话ID
进行维护,该ID存储在钥匙链中,也存储在服务器端以检查活动会话。每次用户登录应用程序时,都会生成一个新的令牌,用户可以访问API方法来获取数据
问题
如果用户让应用程序保持打开状态超过5分钟(令牌过期时间
),该怎么办?令牌已过期,将不可用,如何刷新它?我应该什么时候刷新它
我阅读了有关刷新令牌的内容,但不确定如何处理它们(这是正确的选择吗?),因为[Authorize]
属性只会在令牌过期时拒绝我的呼叫,而不提供过期消息,我无法理解它是过期令牌还是无效令牌
如果用户打开应用程序的时间超过5分钟怎么办
(令牌到期时间)?令牌将不可用,因为它已被删除
过期了,如何刷新
如果我理解正确,您将令牌过期时间设置为5分钟,这意味着如果用户让应用程序打开超过5分钟,令牌将不再有效。实际上,用户必须重新登录才能获得新令牌
回到你的问题,在代币过期的那一刻,我的建议是你可以显示登录页面,告诉用户他必须再次登录才能使用该应用程序
我不知道是否有其他方法获得新令牌,如果有,使用可能不必重新登录
此外,我还发现了一条可能有用的线索:谢谢你的回答。我不希望用户再次登录,实际上,会话已经保持活动状态,我只需要知道何时以及如何刷新令牌,以避免出现用户不采取任何操作就打开应用程序的情况。这将导致令牌过期,用户将无法执行任何调用。如果用户在5分钟内调用任何api,令牌将刷新,对吗?确切地说,这是刷新令牌的一般想法。不知道它是否正确,但这就是它现在的实现方式。问题是如果用户在5分钟内没有采取任何行动。我认为应该使用计时器来计算时间,并每5分钟自动重复调用一个api,即使用户在5分钟内没有采取任何行动。如果你的应用程序中调用了其他api,那么最好重新启动计时器重新计数。对于移动应用程序来说,计时器不是太贵了吗?我不知道这是否是一个好的做法,我会寻找它,谢谢