gpt4 book ai didi

javascript - Angular $cookies 不持久

转载 作者:行者123 更新时间:2023-12-03 07:27:42 26 4
gpt4 key购买 nike

我正在使用 Angular $resource 来访问 API。在这种特殊情况下,使用自定义登录操作来登录用户。

为了在身份验证后保存 API 提供的 token ,我将一个拦截器附加到自定义登录操作,该操作只是通过 $cookies 将 token 保存到 cookie。

我正在使用拦截器,因为我需要从应用程序的其他部分保存和更新该 cookie。

问题在于 cookie 似乎无法持久保存。

如果我在保存后立即检查该值,我可以确认它的存在,但是一旦我的 $location 发生更改(例如登录后呈现主页时),cookie 就会消失。

有什么想法吗?

谢谢,D。

这是我的登录服务,它使用自定义登录操作和拦截器

(function() {
'use strict';

//Login Service
// Authenticates a user
angular
.module('console')
.factory('LoginService', LoginService);
LoginService.$inject = ['$resource', 'Config', 'UserInfoInterceptor'];

function LoginService($resource, Config, UserInfoInterceptor) {

return $resource(Config.api_url + '/auth/', {},
{
login: {
method: 'POST',
url: Config.api_url + '/auth/login',
data: {type: "passwd"},
interceptor: UserInfoInterceptor,
headers: {
"accept": "application/json",
"content-Type": "application/json;odata=verbose"
}
}
});
}
})();

这里是拦截器(那里的console.log,实际上写入了cookie值),但是在转到其他位置后它就丢失了。

(function() {
'use strict';

angular
.module('console')
.factory('UserInfoInterceptor', UserInfoInterceptor);
UserInfoInterceptor.$inject = ['$resource', 'Config', '$q', '$location', '$cookies'];


function UserInfoInterceptor($resource, Config, $q, $location, $cookies) {

return {

// Save the received token
'response': function (response) {

var now = new Date();
// this will set the expiration to 30 days
var exp = new Date(now.getFullYear(), now.getMonth()+1, now.getDate());

// Set the cookie
$cookies.put('token', response.data.token, {expires: exp});

//This actually works!!
console.log($cookies.get('token'));

return response;
},

// Whatever is the failure, throw the user to the login page
'responseError': function (response) {
if (response.status === 401 || response.status === 403) {
$location.path('/login');
}
return $q.reject(response);
}
};
}

最佳答案

这已经太晚了,但我认为这个修复也可能对其他人有所帮助。

我尝试在 $cookiesProvider 中设置 cookie 路径,如下所示,

xxApp.config(['$cookiesProvider', function ($cookiesProvider) {
$cookiesProvider.defaults.path = '/';
}]);

关于javascript - Angular $cookies 不持久,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35933907/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com