希望这是一个简单的!
我希望在显示任何屏幕或调用任何后续服务之前确保访问应用程序的用户已解决。
我可以通过使用第一个请求中已经存在的令牌进行HTTP REST调用来解析用户。
然后将该用户传递给后续的休息呼叫,例如一个REST服务来#34;得到我的工作"。
我知道我可以在路由上使用解析功能,但为了实现这一点,我必须将其添加到每个路由中,因为我无法始终保证用户会通过前门进入。
我尝试将它放入一个跨越整个应用程序的主控制器,但问题是首先调用路由解析,这需要用户进行REST调用。
有什么想法吗?
此致 凯文。
答案 0 :(得分:1)
我之前遇到过类似问题,我很幸运地遇到了this示例项目。
我们有2个项目
在项目A中,我们基本上可以做到这一点。
如果cookie在返回...工作完成时存在(&有效),则在cookie内写一个userToken。 如果没有,请登录以便我们创建cookie。
但我的建议路线是遵循项目B:
您基本上需要一个临时应用程序/状态,您可以在其中执行操作 初步检查,如果您的用户没有通过正常的登录路线进入。
我从这个令人敬畏的mrgamer角度登录示例项目中耻辱地窃取了下图。 他的项目可以在here找到。
angular.module('angular-login.pages', ['angular-login.grandfather'])
.config(function ($stateProvider) {
$stateProvider
.state('app.admin', {
url: '/admin',
templateUrl: 'pages/admin.tpl.html',
accessLevel: accessLevels.admin
})
.state('app.user', {
url: '/user',
templateUrl: 'pages/user.tpl.html',
accessLevel: accessLevels.user
});
});
文档非常冗长,应该解释整个方法的一些复杂性
我并不熟悉这种方法(因为我还没有在完全成熟的应用程序中尝试过它)。您可以对$routeChangeStart
angular.module('angular-client-side-auth', ['ngCookies'])
.run(['$rootScope', '$location', 'Auth', function ($rootScope, $location, Auth) {
$rootScope.$on("$routeChangeStart", function (event, next, current) {
if (!Auth.authorize(next.access)) {
if(Auth.isLoggedIn()) $location.path('/');
else $location.path('/login');
}
});
}]);
来自here
的来源