【发布时间】:2016-06-26 07:06:54
【问题描述】:
我在这里AngularJs logout action 发布了更复杂的问题。但我还有另一个方面要看,我认为它应该是分开的问题。
我有带有身份验证的 Angualr SPA。使用不记名 JWT 令牌实现的身份验证。我使用ng-route 提出不同的观点。让我们想象一下,一个视图(使用/protected 路由、protecetedController 和protectedDataService)包含受保护的资源,而另一个视图(使用/unprotected 路由、unprotecetedController 和unprotectedDataService)包含不受保护的资源。控制器示例代码:
(function () {
'use strict';
angular
.module('protectedCtrl',[])
.controller('protectedController', ['$location','protectedDataService', function ($location, protectedDataService) {
var vm = this;
vm.title = 'protectedController';
protectedDataService.getData().then(function (res) {
vm.values = res.data;
}, function (err) {
console.log(err);
});
}]);
})();
不受保护的控制器:
(function () {
'use strict';
angular
.module('unprotectedCtrl',[])
.controller('unprotectedController', ['$location','unprotectedDataService', function ($location, unprotectedDataService) {
var vm = this;
vm.title = 'unprotectedController';
unprotectedDataService.getData().then(function (res) {
vm.values = res.data;
}, function (err) {
console.log(err);
});
}]);
})();
如果未登录的用户访问受保护的资源(/protected 路径),他将被重定向到登录页面。但是让我们想象一下,该登录用户按下注销按钮(现在我只是从浏览器本地存储中删除我的令牌信息并重新加载页面)。如果用户在/protected 页面上,他应该被重定向到登录页面。如果他在/unprotected 页面上,则不会发生任何事情。我该如何实施?如何确定ng-view 中哪个页面处于活动状态(需要或不需要身份验证)并决定重定向?
【问题讨论】:
标签: javascript angularjs authentication single-page-application logout