繁体   English   中英

Angular默认页面路由

[英]Angular default page routing

AngularJS(1)用于我的UI。 我需要更改默认页面的行为。 如果用户未获得授权,他应该导航到登录页面的其他案例 - >特殊页面。

配置匿名模块

anonimModule.config(function ($routeProvider, anonimTemplateManager, anonimUrlManager) {
  $routeProvider
      .when('/', {
          templateUrl: anonimTemplateManager.getLoginPath(),
          controller: 'loginCtrl'
      })

我只能设置一次此行为(例如仅用于登录),但如果用户授权,则无法访问特殊页面。 我试图从(解决我的问题) 获取$ rootScope的访问权限 - 未成功。

是否可以实现路由的动态行为? 我可以有实例或想法来实现它吗?

尽量使用否则。

只需链接它,就像这样:

.when('/foo', {
   templateUrl: 'foo.html',
   controller: fooController
)
.when('/bar', {
   templateUrl: 'bar.html',
   controller: barController
)
.otherwise(
    redirect: '/foo'
)

您还可以编写$state.go('/url')以移动到anonimTemplateManager.getLoginPath()方法中的另一个页面。

很少有其他同样工作的方法

  • $location.url();
  • $state.go('/url')
  • $window.location.href = '/index.html';

没试过一切。

您可以使用状态路由,然后您可以使用statechangestart事件,例如: -

.state('user.dashboard', {
        templateUrl: 'pages/my/dashboard/deshboard.html',
        controller: 'myDashboardController'
        url: '/dashboard',
         access: {
            loginRequired: true
        }

然后在app.js中你可以使用$ stateChangeStart和一些auth服务来检查用户是否在authrize访问该状态

 $rootScope.$on('$stateChangeStart',
            function (event, toState) {
                var authorised;
                if (toState.access !== undefined) {
                    authorised = authorizationServie.authorize(toState.name);
                   if (authorised ===  false) {
                        $state.go("loginState");
                        event.preventDefault();
                    }
                }
            });

当您在应用程序中登录时,您将授权数据保存在本地存储中,如果用户未在您的应用程序中登录,您应该检查任何时间状态更改,您的应用程序必须在登录页面中路由或显示警报...执行此操作:

var app=angular.module("myApp",["LocalStorageModule"]);
app.run(function($rootScope,$state,localStorageService){
     rootScope.$on("$stateChangeSuccess", function (event, toState, parameters, from) {
     if(localStorageService.get("authorizationData") !== 'logined')
        $state.go("loginPage");
    });
}

即使您可以使用stateChangeSuccess事件参数中的变量保存先前的状态,并将其保存在rooScope中以返回当前状态。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM