- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试构建我想在根状态解析上初始化的 Angular 色权限系统:
$stateProvider
.state('common', {
resolve:{
user: function(AclService, UserService) {
UserService.getCurrent().then((currentUser) => {
AclService.initialize(currentUser);
});
}
}
})
并且每次在 $stateChangeStart 上检查权限:
$rootScope.$on('$stateChangeStart', ($event, toState) => AclService.interceptStateChange($event, toState));
但我遇到了一个问题,即首先 $stateChangeStart 在 resolve 之前被触发,因此权限尚未初始化。
在这种情况下你会推荐什么?
最佳答案
您可以在应用的运行函数中执行此操作。这是我如何预先加载身份验证数据的简化版本。
(function() {
"use strict";
angular
.module("myModule", [ //dependencies here...]);
angular
.module("myModule")
.run(run);
run.$inject = ["$rootScope", "$state", "authService"];
function run($rootScope, $state, authService) {
authService.fillAuthData(); //front load auth stuff here...
$rootScope.$on("$stateChangeStart", function (event, toState, toParams, fromState, fromParams) {
var isPublic = (toState.data && toState.data.isPublic && toState.data.isPublic === true);
var requiredRole = (toState.data && toState.data.requiredRole) ? toState.data.requiredRole : null;
var authorized = isPublic || authService.isUserInRole(requiredRole);
if (authService.authentication.isAuth || isPublic) {
//if the user doesn't have the requisite permission to view the page, redirect them to an unauthorized page
if (!authorized) {
event.preventDefault();
$state.go("unauthorized");
return;
}
} else {
event.preventDefault();
$state.go("login");
return;
}
});
}
})();
状态定义可能如下所示:
.state("someState", {
url: "/someState",
templateUrl: "my/folder/file.html",
data: {
pageTitle: "Some Page",
isPublic: false,
requiredRole: "Admin"
}
})
关于javascript - 是否可以在触发 $stateChangeStart 之前解析某些数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35652567/
我正在使用 $stateChangeStart 进行登录。 在我的网站中,我有一些页面,用户在未登录时可以访问这些页面。 我编写此代码是为了注销并检查某些页面上的访问权限。 但是当用户转到有关页面时我
$rootScope.$on('$stateChangeStart', function(event, toState , toParams
请, 我在我的项目中使用 ui-router。 $stateChangeStart当用户在状态之间导航时,事件工作正常。 但是如果我刷新浏览器,它就不起作用。 这是我的源代码: (function()
我的 app.run() 中有以下代码: window.audienceConfig = InstitutionConfiguration.checkConfiguration(INSTITUTION
有没有办法从父状态获取参数。 我的状态是这样的。 $stateProvider .state('home', { url: '/home/:param1
我正在尝试构建我想在根状态解析上初始化的 Angular 色权限系统: $stateProvider .state('common', { resolve:{ user: f
我正在尝试使用 AngularUI 路由器进行一些身份验证。 $urlRouter.sync()看起来正是我需要的。但是,这仅在我拦截 $locationChangeSuccess 时可用.但是当我这
加强 Angular 和ui-router 如果不满足先决条件,则很难重定向到不同的状态: 我尝试使用拦截器:( How do I preform a redirect in an angular i
当应用程序更改路由时,我的 AngularJs 运行 block 不会执行处理程序函数,至少我是这么认为的。我尝试放置一个简单的控制台日志来测试,但它没有记录任何内容。最终目标是成为一个路由拦截器,检
这是我的 app.js var $stateProviderRef = null; var $urlRouterProviderRef = null; var acadb = angular.modu
我试图在加载 Home 子状态之前解析抽象父状态中的一些服务器端数据。我想确保在州的 data.rule 函数中我有用户的全名以供检查。但是,使用 console.log 语句,我可以看到 userF
我正在尝试为用户实现基于路由的安全性,但 stateChangeStart 没有触发,这是我的代码: app.run(['$rootScope', '$location', function($roo
我想知道这三个有什么区别,它们对应的$locationChangeSuccess , $routeChangeSuccess , 和 $stateChangeSuccess . 最佳答案 $locat
我想知道是否有替代方案 $rootScope.$on("$stateChangeStart", function() {}); 因为我想在许多执行不同操作的页面上获取该事件。如果我使用上面的方法,那么
我使用 this创建我的网站,当我创建一个带有 $rootScope.on('$stateChangeStart') 的运行方法时,它不起作用。这是代码: .run('Url',function($r
我使用 this创建我的网站,当我创建一个带有 $rootScope.on('$stateChangeStart') 的运行方法时,它不起作用。这是代码: .run('Url',function($r
我在我的项目中使用 AngularJs,并在其中使用 ui-router。 当用户单击链接时,我需要先轻轻淡出当前 View ,然后再将其导航到另一个 View 。 我已经为此编写了指令,这是它的链接
我尝试进行用户登录身份验证,我创建了一个名为 AuthService 的服务,方法是 isAuthenticated,我在其中调用 API 进行交叉检查用户是否登录(稍后我将在其中使用用户 Angul
我有一个 angular 应用程序,它使用授权逻辑和 ui-router 来禁止未经授权的用户访问某些状态/ View 。我遵循监听 stateChange 事件的标准方法,该事件触发我的授权逻辑。这
我的目标是将 token 作为授权 header 发送到我的应用程序中的每个服务调用。 这是我的代码 'use strict'; var properties = {}; angular.module
我是一名优秀的程序员,十分优秀!