Angularjs Angular应用程序中的授权和登录控制

Angularjs Angular应用程序中的授权和登录控制,angularjs,cookies,login,authorization,Angularjs,Cookies,Login,Authorization,所以在过去的几个月里,我一直在开发我的Angular应用程序的“登录功能”,就像这样。用户登录,如果凭据正确,RESTAPI将返回一个令牌。我将该令牌作为cookie存储: $cookies.put('authorisation', data['token']); 无论何时调用$http服务,我都会将授权cookie作为头提交,并授权http请求。然后在每个视图的控制器上添加: if (!$cookies.get('authorisation')) { $location.path('

所以在过去的几个月里,我一直在开发我的Angular应用程序的“登录功能”,就像这样。用户登录,如果凭据正确,RESTAPI将返回一个令牌。我将该令牌作为cookie存储:

$cookies.put('authorisation', data['token']);
无论何时调用$http服务,我都会将授权cookie作为头提交,并授权http请求。然后在每个视图的控制器上添加:

if (!$cookies.get('authorisation')) {
    $location.path('/login');
}
因此,如果cookie不存在,用户将自动跳转到登录屏幕


到目前为止,这对我来说还不错,但我忍不住觉得这不是一种“正确”的做事方式。有谁能解释一下这方面的最佳实践方法是什么?也许我所做的是“错”的原因

您熟悉Angular$http拦截器吗:

$http#拦截器

您可以使用请求拦截器在每个$http请求之前检查您的授权

如果您这样做,您还必须在每个$http配置对象上集成一个自定义标志(例如skipAuthorization),以便允许用户在不登录的情况下执行请求(对实际登录有用;-)


@对你的评论,阿兹杜德: 我正在使用ui路由器在Angular 1.6.X应用程序中进行导航。 您可以在状态(isGuestState)上集成自己的配置属性,或者如果它是一个封闭的应用程序(如我的应用程序),则可以在$stateChange事件中硬编码,如下所示:

好的,是的,我以前听说过拦截器。我可以进一步研究这个问题。但是,当用户未登录时,究竟应该如何限制对页面的访问?如果$http失败,是否应该恢复登录?嗨@AzzyDude,如果仍然感兴趣,我在回答中添加了我的$stateChangeStart事件处理程序(非常感谢您在两年后回复我!)