当前位置: 首页 > 面试题库 >

Angular ui-router:如何防止访问状态

仰英发
2023-03-14
问题内容

您好,我是angularJS的新手,并一直在尝试阻止根据用户critera访问某些状态。

这是从ui-router的FAQ中准确描述的,但是我无法使其正常工作。我需要什么,但要在数据对象中准确地完成此操作?

(我看到有人在某些博客文章教程中投入“ true”,并像我一样使用它,但这似乎不起作用,因为我收到一条错误消息,指出needAdmin未定义)

这是我的代码:

angular.module('courses').config(['$stateProvider',
    function($stateProvider) {
        // Courses state routing
        $stateProvider.
        state('listCourses', {
            url: '/courses',
            templateUrl: 'modules/courses/views/list-courses.client.view.html'
        }).
        state('createCourse', {
            url: '/courses/create',
            templateUrl: 'modules/courses/views/create-course.client.view.html',
            data: {
                needAdmin: true
            }
        }).
        state('viewCourse', {
            url: '/courses/:courseId',
            templateUrl: 'modules/courses/views/view-course.client.view.html'
        }).
        state('editCourse', {
            url: '/courses/:courseId/edit',
            templateUrl: 'modules/courses/views/edit-course.client.view.html',
            data: {
                needAdmin: true
            }
        });

    }
]);


angular.module('courses').run(['$rootScope', '$state', 'Authentication', function($rootScope, $state, Authentication) {
  $rootScope.$on('$stateChangeStart', function(e, to) {

    var auth = Authentication;

    console.log(auth.user.roles[0]);
    if (to.data.needAdmin && auth.user.roles[0] !== 'admin') {
      e.preventDefault();
      $state.go('/courses');
    }

  });
}]);

问题答案:

如果状态为no data,则to.data未定义。试试这个:

if (to.data && to.data.needAdmin && auth.user.roles[0] !== 'admin') {


 类似资料:
  • 场景是:您有一个有效期较长的刷新令牌和一个有效期限较短的访问令牌。 设置:有一个客户端、应用程序服务器和身份验证服务器。 客户端存储访问令牌。 应用程序服务器存储刷新令牌。 身份验证服务器分发刷新访问令牌。 其中一个优点是被盗的访问令牌只能在其有效的时间内使用。 假设黑客窃取了有效期为30分钟的访问令牌。当黑客在30分钟后用有效但过期的被盗访问令牌发出请求时,应用服务器用刷新令牌刷新它,从而黑客获

  • 问题内容: 我的网站上有一个说 “ check.php” 的php文件,在提交表单时执行。 说我的网站是 “ myweb.com” ,而php文件在目录“ PHP”中 我想防止直接访问“ check.php”文件的网址,即,如果有人键入网址“ **_myweb.com/PHP/check.php_** ”,则不应执行该php文件,而应返回一条错误消息。 我试图通过在.htaccess中设置规则来阻

  • 本文向大家介绍问题:如何防止过拟合?相关面试题,主要包含被问及问题:如何防止过拟合?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 1.早停法;2.l1和l2正则化;3.神经网络的dropout;4.决策树剪枝;5.SVM的松弛变量;6.集成学习 解析:能够达到模型权重减小,模型简单的效果

  • 问:我们如何防止主机提供商访问我们的数据? > 我们不希望宿主提供程序的用户登录Sql Server并查看数据。 我们不希望盒子里有数据库文件的未加密副本。

  • 本文向大家介绍请问如何防止数组越界?相关面试题,主要包含被问及请问如何防止数组越界?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 由于数组的元素个数默认情况下是不作为实参内容传入调用函数的,因此会带来数组访问越界的相关问题 防止数组越界: 1)检查传入参数的合法性。 2)可以用传递数组元素个数的方法,即:用两个实参,一个是数组名,一个是数组的长度。在处理的时候,可以判断数组的大小,保证自

  • 问题内容: 考虑以下简单的DAG: 现在想象一下,我还有其他一些任意准则选择第一个和最后一个边缘,即1-> 2和3-> 4。我想使用这些来查找图表的其余部分。 我可以编写一个递归CTE,如下所示(我使用的是MSDN的术语): 但是,这导致边缘3-> 4被两次选择: 如何防止查询重复出现在已经描述过的子图中?如果在查询的“递归成员”部分中,我可以引用 到目前为止递归CTE检索到的所有数据 (并在递归