【问题标题】:AngularJs Cookie not workingAngularJs Cookie 不工作
【发布时间】:2016-05-18 03:13:18
【问题描述】:

我正在学习 Angular JS,但遇到了 cookie 问题。我有一个简单的登录工作正常,但是当我登录后刷新时,它会让我回到登录页面。我想设置cookie然后保持登录状态。

app.js

var myApp = angular.module('myApp', ['ngRoute', 'ngResource', 'ngCookies']);

myApp.config(['$routeProvider', function($routeProvider){
  $routeProvider.
  when('/', {
    templateUrl: 'views/home.html',
    controller: 'loginController'
}).
when('/admin', {
    resolve: {
        "check": function($location, $rootScope){
            if(!$rootScope.loggedIn){
                $location.path('/')
            }
        }
    },
    templateUrl: 'views/admin.html',
    controller: 'loginController'
}).
otherwise({
    redirectTo: '/'
});
}]);

loginController.js

myApp.controller('loginController', ['$scope', '$http', '$location',     '$rootScope', 'userService', 'authService' '$cookies', function($scope, $http, $location, $rootScope, userService, authService, $cookies){

$scope.submitLogin = function(){
    if($scope.username == 'admin' && $scope.password == 'admin'){
        $rootScope.loggedIn = true;
        //set date to 24 hours
        var expireDate = new Date();
        expireDate.setDate(expireDate.getDate() + 1);
        //set cookie
        $cookies.put('userName', $scope.username, {
            'expires': expireDate
        });
        //get cookie
        $rootScope.cookie = $cookies.get('userName');
        $location.path('/admin');
    } else {
        alert("Wrong user name / password");
    }
}

}]);

【问题讨论】:

    标签: angularjs cookies


    【解决方案1】:

    当您刷新页面时,$rootScope.loggedIn 不再存在。您需要检查 cookie 是否存在,而不是依赖内存中的变量。

    如果没有所有依赖项,我无法让 codepen 正常工作,但基本上你的解析函数应该如下所示:

    resolve: {
          "check": function($location, $rootScope) {
            var cookie = $cookies.get('userName');
            console.log(cookie)
            if (!cookie) {
              $location.path('/')
            }
          }
    

    【讨论】:

    • 您能提供一个代码示例或指向一个有代码示例的站点吗?感谢您的帮助
    • 您只需要执行 $cookies.get("userName") 来查看用户是否已通过身份验证,而不是使用 rootScope 变量。如果这没有意义,请将您的代码放入 Codepen,我将对其进行编辑。
    猜你喜欢
    • 2016-01-15
    • 1970-01-01
    • 2014-11-21
    • 1970-01-01
    • 2016-07-23
    • 2018-10-16
    • 1970-01-01
    • 1970-01-01
    • 2012-12-22
    相关资源
    最近更新 更多