2016-11-08 80 views
1

我使用Angular 1.5.8和Laravel 5.2创建了一个应用程序。我正在使用Luca Degasperi创建的一个图书馆来创建基于令牌的身份验证在http请求之前检查访问令牌

Via Angular我拨打了电话,并收到了access_token,TTL和refresh_token。我在localStorage上存储access_token和refresh_token。我可以使用access_token来调用API来获取一些数据。当令牌过期时,我收到一条消息,表示令牌对于401代码无效

所以我的问题是如何在我的API发送http请求之前检查令牌是否仍然有效?什么是刷新令牌的最佳方式?好的,我可以发送一个请求来刷新我的令牌到https://my.api/oauth?grant_type=refresh_token&refresh_token=f32j93201h00xpaf1,但是如何在每个http请求之前检查它?如果响应代码是401,我可以重复呼叫吗?如何?

请给我一些建议:)

+0

你可以使用[$ http错误响应拦截器](https://docs.angularjs.org/api/ng/service/$http#interceptors)如果响应代码是401,则重复呼叫。 – georgeawg

回答

0

你不能。你必须检查登录。因此它只是一个重新登录。

我想如果你得到一个401,你的刷新标记已经完成。

虽然我猜你可以加入该刷新标记与您的所有请求?我可能错了。

确保您的令牌TTL始终保持最新状态,方法是不时刷新其TTL(如向您的API发送请求)。

0

您不能使用TTL来确定令牌是否仍然有效吗?当您将令牌存储在本地存储中时,您可以添加令牌存储的日期/时间,并且每次进行服务调用时都可以检查TTL与令牌存储的时间。

虽然它只会告诉你它何时到期,而不是因为某种其他原因导致令牌失效。