繁体   English   中英

角度路由不会重定向

[英]angular-route wont redirect

我有一个问题,登录后我的页面没有重定向到主页。 使用$window.location时,我已经检查了条件登录的工作情况。 我想使用angular-route来防止没有登录的用户访问我的主菜单。 如果使用$window.location ,则用户无需登录即可访问我的主菜单。 这是我的js文件

 app.config(function($routeProvider){
      $routeProvider
      .when('/',{
        templateUrl:'index.html'
      })
      .when('/mainmenu',{
    resolve:{
      "check":function($location,$rootScope){
        if (!$rootScope.loggedIn) {
          $location.path('/');
        }
      }
    },
    templateUrl:'content/mainmenu2.html'
  })      
.otherwise({
        redirectTo:'/'
      });
    });

    app.controller("logincont", ['$scope','$http','$window','$rootScope','$location',function($scope,$http,$window,$rootScope,$location){
    $scope.login = function () {
           $http.get('http://localhost:8089/MonitoringAPI/webresources/login?a='+$scope.userid+'&d='+$scope.password).then(function(response){
           $scope.reslogin  = response.data;
          if($scope.reslogin == null)
            {
              alert('Login Incorrect'); 
            }
            else
            {
              $rootScope.loggedIn = true;
              $location.path('/mainmenu');

            }
      });
          };   

          }]);

这是我的html

<form>
        <h1 class="tengah"> Form Login </h1>
        <div class="form-group">
            <label for="inputId">User Id</label>
            <input type="text" class="form-control" ng-model="userid" placeholder="userid" required>
        </div>
        <div class="form-group">
            <label for="inputPassword">Password</label>
            <input type="password" class="form-control" ng-model="pass" placeholder="Password" required>{{password}}
        </div>
        <button type="submit" class="btn btn-primary" ng-click="login()">
            <span class="fa fa-sign-out"></span>Login</button>
    </form>

您可以通过在不想进行身份验证的路由上使用标志allowUnauth来实现此目的,例如login ,然后更改路由,例如:

app.config(function($routeProvider){
      $routeProvider
      .when('/',{
        templateUrl:'index.html',
        allowUnauth:true
      })
      .when('/mainmenu',{
    templateUrl:'content/mainmenu2.html'
  }).otherwise({
        redirectTo:'/'
      });
    });

 var unauthRoutes= [];
    angular.forEach($route.routes, function(route, path) {
        // push route onto unauthRoutes if it has a truthy allowUnauth value
        route.allowUnauth && (unauthRoutes.push(path));
    });

    $rootScope.$on('$routeChangeStart', function(event, nextLoc, currentLoc) 
    {
        var atuhRoute= (-1 === unauthRoutes.indexOf($location.path()));
        if(atuhRoute && !$rootScope.loggedIn) {
            $location.path('/');
        }
    });

工作塞

尝试类似

"use strict";

configureApp.$inject = ['$routeProvider'];
function configureApp($routeProvider) {
  $routeProvider
    .when('/mainmenu', {
      resolve: {
        ensureAthenticated: (function() {
          ensureAthenticated.$inject = ['$rootScope'];
          function ensureAthenticated($rootScope) {
            if(!$rootScope.loggedIn) {
              return Promise.reject('not athenticated');
            }
            else return Promise.resolve();
          };
          return ensureAthenticated;
        }())
      },
      templateUrl:'content/mainmenu2.html'
    })
    .otherwise('/');
}

app.config(configureApp);

暂无
暂无

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

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