.net 处理刷新令牌
我的ASP.NET WebAPI中有一个使用OWIN身份验证的web api,我需要实现刷新令牌 当用户登录时,API向客户端发送.net 处理刷新令牌,.net,ajax,security,asp.net-web-api,.net,Ajax,Security,Asp.net Web Api,我的ASP.NET WebAPI中有一个使用OWIN身份验证的web api,我需要实现刷新令牌 当用户登录时,API向客户端发送访问令牌、到期日(3分钟)和刷新令牌 然后令牌保存在客户机localStorage中 我知道如果access\u令牌过期,使用refresh\u令牌是为了获取新的access\u令牌 现在我的问题是什么时候做 每次我请求Web API中的数据时,是否需要检查客户端是否仍有有效/未过期的访问\u令牌?如果访问令牌过期,我需要请求一个新的访问令牌,对吗 例如: 客户端(移
访问令牌
、到期日
(3分钟)和刷新令牌
然后令牌保存在客户机localStorage
中
我知道如果access\u令牌
过期,使用refresh\u令牌是为了获取新的access\u令牌
现在我的问题是什么时候做
每次我请求Web API中的数据时,是否需要检查客户端是否仍有有效/未过期的访问\u令牌
?如果访问令牌过期,我需要请求一个新的访问令牌,对吗
例如:
api/订单
(Web api)中的数据access\u令牌已根据本地存储中保存的expiration\u日期过期
refresh\u-token
获取新的access\u-token
,然后再次请求api/orders
。基本上同时做三个请求?在我看来有点效率$.ajax({
type: 'GET',
url: WEB_API_URL,
data: data,
dataType: 'json',
beforeSend: function(xhr) {
// need to check if the accessToken is expired
xhr.setRequestHeader("Authorization", "Bearer " + accessToken);
},
}).
您应该首先从数据存储中获取令牌。检查它们在接下来的几秒钟内是否有效。您不希望遇到失败的授权,因为您的请求因某些原因而延迟 如果令牌即将过期,请使用刷新令牌获取新的访问令牌 然后将请求发送到Web Api 简言之
1. Get token from datastore.
2. Check if token is valid.
3. If not valid, get new token.
4. Send request to Web Api.
我没有Ajax方面的经验,但使用此流程,您应该能够处理最多2个api请求。1-3在登录中完成,如果客户端已经登录,该怎么办。我们需要再打1-3吗?如果令牌在向WebAPI请求时无效,情况会变得复杂。我的观点是,当用户登录时,它的令牌存储在localStorage中,然后在向API的后续请求中,它将使用该令牌。如果用户已登录时令牌过期怎么办?在我的例子中,我的令牌将在3分钟内到期。这就是为什么您需要为每个请求从数据存储中检索令牌。其他任何情况下,您在3分钟后无法再提出请求。我不知道具体的背景,但是如果你想减少对新令牌的调用量,可能会增加过期时间?你是说每次请求我都需要请求一个新的访问令牌?你说的数据存储是什么意思?我的实现是,当用户登录时,我从web api获取access_令牌,然后将其保存在客户端的localStorage中。每次对API的请求,我都使用来自localStorage的这个访问令牌。现在,当这个令牌过期时,问题就出现了。这是我的问题。下一步是什么?数据存储,我指的是本地存储。当它过期或即将过期时,请使用刷新令牌从Web Api检索新的访问令牌。再次将新的访问令牌存储在本地存储中。