Angular ui路由和权限

Angular ui routing and permissions

本文关键字:权限 路由 ui Angular      更新时间:2023-09-26

我目前在我的Angular应用程序中使用ui.router作为页面路由,但是它开始得到一些问题,利用我的应用程序的一部分给没有权限的用户。

我试着找到关于这个的文档,但没有运气,所以希望这里有人有一个方法。

在下面的例子中,我显示我的应用程序中有三个页面,但并非所有页面都允许转到moderators页面。如果他们这样做,我当然会验证权限服务器端并重定向它们,但我觉得在我的应用程序中显示所有可能的页面有点利用它,这是否可以在某种程度上限制ui.router,而不是由我自动生成路由器文件服务器端,或者这只是我需要的东西:)

$stateProvider
    .state('default', {
        url: '/',
        views: {
        'mainViewContainer': {
            templateUrl: 'pages/default.html'
            }
        }
    })
    .state('news', {
        url: '/news',
        views: {
        'mainViewContainer': {
            templateUrl: 'pages/news.html'
            }
        }
    })
    .state('moderators', {
        url: '/moderators',
        views: {
        'mainViewContainer': {
            templateUrl: 'pages/moderators.html'
            }
        }
    });

尝试添加using resolve -一个状态的先决条件列表

.state(..., {
    ...
    resolve: {
         adminPermission: (AdminService) => {
               return AdminService.validate();
         }
    }
    ...
 })

然后,如果AdminService返回一个失败的承诺,应用程序将不会进入状态(你可以使用$onStateChangeError事件捕获它)

编辑:

把主持人的状态写在if子句中怎么样

If(isAdmin) 
   stateProvider.state(...)