AngularJs Cookie 不工作

标签 angularjs cookies

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

应用程序.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: '/'
});
}]);

登录 Controller .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");
    }
}

}]);

最佳答案

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

如果没有所有依赖项,我无法让 codepen 工作,但基本上你的 resolve 函数应该看起来像这样:

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

关于AngularJs Cookie 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37281880/

相关文章:

angularjs - 从 Angular 带模态返回数据

javascript - AngularJS:ng-show 与显示:无

javascript - 套件与规范 Protractor

angularjs - 使用 AngularJS + Firebase + Google App Engine 进行用户身份验证和授权

php - 将 cookie curl 到 Golang HTTP 请求

angularjs - 移动应用程序中的 Cookie

javascript - 如何使用动态变量名调用 Angular 范围?

session - 强制清理 session cookie(firefox、chrome)

asp.net-mvc - set-cookie 似乎被 Chrome 忽略了,但 IE 却没有?奇怪的过期问题? 302 重定向?好天哪,你们大家

ruby-on-rails-3 - Rails中cookie的默认过期时间