使angularjs永远不会过期

时间:2016-01-04 07:30:03

标签: javascript angularjs cookies

我正在使用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永不过期并且即使在浏览器关闭后仍然存在?

1 个答案:

答案 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});
            }

我知道这是一篇旧帖子 - 我希望这可能有助于某人。