我正在使用angularjs cookies。
https://docs.angularjs.org/api/ngCookies/service/$cookies
我使用$cookies
存储用户名和密码。我知道这是不好的做法,但暂时放在一边。我希望用户登录一次,除非清除cookie,否则永远不需要再次登录。但是,问题是在Chrome浏览器关闭后,用户下次访问网页时必须再次登录,因为cookie不再存在。我希望cookie永不过期。
以下是工厂编写的相关代码;
.factory('AuthenticationService',
['$base64', '$http', '$cookies', '$rootScope', '$timeout', 'configuration',
function ($base64, $http, $cookies, $rootScope, $timeout, $configuration) {
var service = {};
service.Login = function (username, password, callback) {
//login code
};
service.SetCredentials = function (username, password) {
var authdata = $base64.encode(username + ':' + password);
$http.defaults.headers.common['Authorization'] = 'Basic ' + authdata;
$cookies.put('username', username);
$cookies.put('authdata', authdata);
};
return service;
}])
如果让cookie永不过期并且即使在浏览器关闭后仍然存在?
答案 0 :(得分:1)
根据我的阅读,您无法将其设置为从不过期 - 请参阅:https://stackoverflow.com/a/532638/669664
我想出的最佳解决方案是将其设置为未来的日期 - 但要注意* nix系统的2038错误(http://en.wikipedia.org/wiki/Year_2038_problem)
使用Angular 1.4+ - 使用$cookiesProvider
选项:
var expireDate = new Date();
expireDate.setTime(2144232732000);
if (thisIsAValue=== undefined) {
$cookies.putObject("thisIsYourCookieObject", {
"foo": 1,
"bar": 1
}, {'expires': expireDate});
}
我知道这是一篇旧帖子 - 我希望这可能有助于某人。