AngularJs Cookie不工作
我正在学习Angular JS,并且在cookies方面遇到了问题。我有一个简单的登录可以正常工作,但当我登录后刷新时,它会将我带回到登录页面。我想设置cookie,然后保持登录状态 app.jsAngularJs Cookie不工作,angularjs,cookies,Angularjs,Cookies,我正在学习Angular JS,并且在cookies方面遇到了问题。我有一个简单的登录可以正常工作,但当我登录后刷新时,它会将我带回到登录页面。我想设置cookie,然后保持登录状态 app.js var myApp = angular.module('myApp', ['ngRoute', 'ngResource', 'ngCookies']); myApp.config(['$routeProvider', function($routeProvider){ $routeProvide
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");
}
}
}]);
刷新页面时,$rootScope.loggedIn不再存在。您需要检查cookie是否存在,而不是依赖内存中的变量 如果没有所有依赖项,我无法让codepen正常工作,但基本上您的resolve函数应该如下所示:
resolve: {
"check": function($location, $rootScope) {
var cookie = $cookies.get('userName');
console.log(cookie)
if (!cookie) {
$location.path('/')
}
}
你能提供一个代码示例,或者给我指一个有代码示例的站点吗?感谢您的帮助您只需执行$cookies.get(“用户名”)即可查看用户是否已通过身份验证,而不是使用rootScope变量。如果这不合理,把你的代码放在代码笔里,我会编辑它。