首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Angular -如何在加载视图之前检查是否允许用户?

Angular -如何在加载视图之前检查是否允许用户?
EN

Stack Overflow用户
提问于 2016-04-13 15:37:41
回答 3查看 147关注 0票数 0

我有一个angular应用程序。我正在使用ui-router管理我的状态。我需要调用一个通用的API来检查是否允许用户查看网页。有没有一个通用的地方,在那里我可以调用API,然后才能进入用户请求的状态?

在我当前的实现中,视图部分显示,然后重新路由发生。

代码语言:javascript
运行
复制
//app.js

$rootScope.$on('$stateChangeSuccess', function(evt, toState) {

    if(toState.name === 'login' || toState.name === 'payment')
        return;

    userService.isBillingCleared().then(function() {
        //redirect to toState
    }, function() {
        $state.go('payment');
    });
});

我如何防止这种情况发生?

EN

回答 3

Stack Overflow用户

发布于 2016-04-13 15:46:58

请尝试以下操作

代码语言:javascript
运行
复制
$rootScope.$on('$stateChangeStart', function(event, toState, toParams, fromState, fromParams, options) { 

  if(toState.name === 'login' || toState.name === 'payment')
    return;

  event.preventDefault(); // prevent the state change 

  userService.isBillingCleared().then(function() {
    $state.go(toState.name); // do the state change manually if allowed
  }, function() {
    $state.go('payment');
  });
}));
票数 1
EN

Stack Overflow用户

发布于 2016-04-13 16:02:03

尝试这个链接,它讨论ui-router中的路由的authentication。看起来这对你来说是一个很好的解决方案。

票数 0
EN

Stack Overflow用户

发布于 2016-07-18 16:59:21

我在开发系统时遇到了类似的问题,唯一的区别是我使用的是angular提供的默认路由器,但显然这不会造成任何问题。

在检查用户的身份验证级别之前将数据隐藏起来,并指示集中整个过程。让我们这样想象一下--你将要显示给用户的视图是隐藏的,除非检查了细节,在那之前,你可以给他们显示任何你想要的预加载器或者其他任何动画。

这是人们在使用web应用程序或任何移动应用程序时通常会做的事情,阻塞数据,除非您确定数据已经准备好可以查看。

即使在页面加载后加载数据的用例中,这种做法也很有用,例如,假设我向用户显示事务,但事务仅在用户调用视图后加载,因此当调用视图时,会调用后端,这意味着用户只能看到一瞬间-一个空表。So...just使用预加载器,首先调用函数,然后让用户看到表。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36591629

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档