Javascript 如何在AngularJS路由器中检查用户是否经过身份验证?
我用Mean.js yeoman生成器设置了一个应用程序。它使用PassportJS设置本地身份验证。这一切都很好,我知道如何检查用户是否从ExpressJS路由文件登录Javascript 如何在AngularJS路由器中检查用户是否经过身份验证?,javascript,angularjs,authentication,express,Javascript,Angularjs,Authentication,Express,我用Mean.js yeoman生成器设置了一个应用程序。它使用PassportJS设置本地身份验证。这一切都很好,我知道如何检查用户是否从ExpressJS路由文件登录 问题是我的大部分页面路由都是在角度路由中完成的。我知道如何使用以下代码检查控制器中的身份验证 // Projects controller angular.module('projects').controller('ProjectsController', ['$scope', '$stateParams', '$locat
问题是我的大部分页面路由都是在角度路由中完成的。我知道如何使用以下代码检查控制器中的身份验证
// Projects controller
angular.module('projects').controller('ProjectsController', ['$scope', '$stateParams', '$location', 'Authentication', 'Projects',
function($scope, $stateParams, $location, Authentication, Projects) {
$scope.authentication = Authentication;
但是如何检查路由中的身份验证。例如,在此路由文件中,我如何仅允许经过身份验证的用户访问工具html文件并将未登录的用户重定向回主页:
'use strict';
//Setting up route
angular.module('analysis').config(['$stateProvider',
function($stateProvider) {
// Projects state routing
$stateProvider.
state('imageAnalysis', {
url: '/analysis',
templateUrl: 'modules/analysis/views/tools.client.view.html'
});
}
]);
我知道那里也有类似的帖子,但我很难理解其中的很多。谢谢,我真的很感谢你的帮助。我是stackoverflow社区的新手,仍在学习社区标准 您可能正在寻找HTTP。检查请求的身份验证 发件人: HTTP拦截器是在一个地方定义行为的好方法 了解如何使用$http为所有调用处理请求或响应 服务当您要在上设置身份验证令牌时,这将改变游戏规则 所有传出呼叫或响应特定HTTP状态错误 系统级。您可以将拦截器与非常有用的 角度存储模块,用于缓存经过身份验证的用户并检索该用户 下一次运行时
有一些好的 在高层,有两种方法:
- 使用视图路由层(例如UI路由器)捕获“未经验证”状态
- 使用HTTP拦截器查找状态为
的请求,该状态指示用户必须登录(或其当前会话已过期)401 Unauthorized
$stateChangeStart
事件,如果用户未登录,您可以观察此事件并阻止它。然后将用户发送到登录页面。这是有状态的(您必须首先记住用户想去哪里,以便登录后可以重定向)
我在上的工作中选择了事件方法,因为它使我能够灵活地在身份验证的基础上定义授权。您可以在您的状态下使用
resolve
您不能为不同的路由和ui路由器使用不同的控制器吗?也许你可以链接到一些你难以理解的“类似帖子”上?这会很有帮助,因为它会让潜在的回答者更好地了解你在尝试什么。谢谢你的帮助!由于我已经可以访问控制器中的身份验证对象,是否有某种方法可以将该身份验证对象放入作用域中,以便我可以在路由器文件中以某种方式访问它?