2017-04-12 1 views
0

これは私のメインのjsファイルです。ここでは、ウェルカムページにアクセスするにはユーザーがログインする必要があります。ユーザーがログインしていない場合は、デフォルトでログインページにリダイレクトする必要があります。ウェルカムページに提出してリダイレクトするが、望ましい結果を実現しない。ここユーザーがログインしていない場合、次のページにアクセスするのを防ぐ方法を教えてください。

はmain.jsがあなたのwelcomeController

var app = angular.module("myApp", ["ngRoute"]) 

        .config(function($routeProvider, $locationProvider) { 
         $locationProvider.hashPrefix(''); 
         $routeProvider 
           .when("/",{ 
            templateUrl : "pages/login.html", 
            controller : "loginController" 
           }) 
           .when("/welcome",{ 
            templateUrl: "pages/welcome.html", 
            controller:"welcomeController" 
           }) 

          }) 
       .controller("loginController", function($scope, $location, $rootScope){ 
          $scope.login = function() { 
           var user = $scope.username; 
           var password = $scope.password; 
           /*var result = $scope.username + $scope.password; 
           console.log(result);*/ 
           if (user == "admin" && password == 'admin'){ 
            $rootScope.loggedIn = true; 
            $location.path('/welcome'); 
           } else { 
            alert("INVALID CREDENTIALS"); 
           } 
          } 
        }) 

       .controller('welcomeController', function($scope){ 
        $scope.message = "welcome here"; 
       }) 
       .controller('logoutController', function($scope,$location){ 
         $scope.logOut = function(){ 
          $location.path('/'); 
         } 

そして、ここでは私のwelcome.htmlある

<span>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Molestias officia praesentium dolore alias, enim nostrum doloribus natus nisi itaque quos ullam. Tenetur aut fugit qui minus, cupiditate, rem est unde.Lorem ipsum dolor sit amet, consectetur adipisicing elit. Suscipit facilis excepturi laboriosam voluptates in doloremque ad, impedit. Nam sunt similique vitae voluptatem fugit molestias, quod accusantium alias nulla dolores ad.</span> 

<div class="logout"> 
    <h4><span style="float: right; color:red; cursor: pointer;" ng-click="logOut()">Logout?</span></h4> 
</div> 
ここ

とlogin.htmlと

Enter user name: <input type="text" name="user" ng-model="username"><br> 
Enter Password: <input type="password" name="password" ng-model="password"><br> 
<input type="submit" name="submit" value="submit" ng-click="login()"> 

答えて

0

routechangeイベントを使用することができます。 は次のようにします:

.when("/welcome",{ 
        templateUrl: "pages/welcome.html", 
        controller:"welcomeController", 
        resolve: { 
         userLoggedIn: function($rootScope, $location){ 
           if(!$rooteScope.loggedIn){ 
            $location.path('/'); 
           } 
         } 
        } 
        }) 

私は、あなたがwelcomeページをロードだけにしてリダイレクトするように避ける...あなたのwelcomeがアクティブになる前にresolveを実行...これはあなたが望むものを達成するための良い方法だと思いますユーザーが

PSにログインしていない場合:(多分私のコードでは、いくつかのセミコロンが含まれていませんが、あなたがこれを扱うことができる)

+0

ありがとうございます:) –

+0

しかし、私はログアウトすると、それは大丈夫ですが、私はlogin.htmlのページにrredirectsしかし、私はこのようなURLを変更する場合 - > http: // localhost/login /#/再び歓迎してください。私は正しいページではありません。私はページをリフレッシュした場合にのみログアウトした後にログアウトした後にログインページにリフレッシュするとwelcome.htmlにはなりません。 !あなたは私の質問があることを願っています! –

+0

ログインページが読み込まれたときにのみ '$ rooteScope.loggedIn'を作成するので、この変数がウェルカムページに直接アクセスしていない可能性があります。これはこのバグの原因となります。 'console.log($ rooteScope.loggedIn)'を使ってこの変数の値を調べ、リダイレクトするためにこれをチェックしてください。 –

0

を提出、あなたが必要ですユーザーがログインしているかどうかを確認します。

は、次の試してみてください。

.controller('welcomeController', function($scope, $rootScope, $location) { 
    if (!$rootScope.loggedIn) 
     $location.path('/'); 

    $scope.message = "welcome here"; 
}); 
-1

あなたは間違ったコントローラであなたのチェックをやっている

angular.module(...).config(['$routeProvider', function($routeProvider) {...}]).run(function($rootScope, $location) { 

// register listener to watch route changes 
$rootScope.$on("$routeChangeStart", function(event, next, current) { 
    if ($rootScope.loggedUser == null) { 
     // not going to #login, we should redirect now 
     $location.path("/login"); 

    }   
}); 

})

+0

任意のルート変更は、ログイン変数を確認する必要があり – pranavjindal999

+0

ログインするためにそれを移動します本当ですかfalseの場合、変数に応じてfalseの場合はログインにリダイレクトします if(!$ rootScope.loggedIn){ // #loginに行かない場合、今すぐリダイレクトする必要があります $ location.path( "/ login"); } –

関連する問題