簡體   English   中英

Cookie的登錄路線AngularJS

[英]Login route with cookies AngularJS

我正在使用angularjs登錄到我的網站。 我的代碼:HTML:

<input type="text" ng-model="username" placeholder="Username">

        <input type="password" ng-model="password" placeholder="Password" >

        <button type="submit" ng-click="login()">Sign in</button>

我的JS:

app.config(function($routeProvider) {
    $routeProvider
        .when('/', {
            templateUrl: 'login.html'
        })
        .when('/dashboard', {
            resolve: {
                "check": function($location, $rootScope) {
                    if(!$rootScope.valueCookie) {
                        $location.path('/');
                    }
                }
            },
            templateUrl: 'dashboard.html'
        })
        .otherwise({
            redirectTo: '/'
        });
});

     $scope.login = function() {
            $cookieStore.put('cookie', someSessionObj);
        $rootScope.valueCookie = $cookieStore.get('cookie');
        $location.path('/dashboard');
        }

我想做的是解決Cookie。 當Cookie位於瀏覽器中時-單擊登錄后,然后進入“ dashboard.html”,刷新頁面之后仍然存在“ dashboard.html”。 我的代碼不起作用,如果我刷新“ dashboard.html”上的頁面,它將使我登錄。 預先感謝您的答復!

問題是

if(!$rootScope.valueCookie) {
     $location.path('/');
}

每當刷新頁面時,您的$rootScope將沒有valueCookie 要使其工作,請在運行函數中編寫以下代碼。

app.config(function() {
   // your code
}).run(function($rootScope, $cookieStore){
   $rootScope.valueCookie = $cookieStore.get('cookie');
});

在儀表板頁面上,您可以編寫ng-init函數

Dashboard.html

<div ng-init="myFunction()">


</div>

在儀表板控制器中,您可以執行此操作

$scope.myFunction = function(){

$scope.valueCookie = $cookieStore.get('cookie');
}

因此,無論何時刷新儀表板頁面,都會調用init函數,並將cookie值存儲在$scope變量中

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM