我是AngularJS的新手
我有一个用于用户管理的资源,它是this篇文章后服务的一部分。
将登录请求发送到服务器后,我收到一个带有set-cookie的响应作为标题的一部分。
将此Cookie添加到我发送给服务器的每个请求的最佳做法是什么?
myApp.factory('UserService', ['$resource', function ($resource) {
var userRes = $resource('http://<MyDomain>/api/v1/user/:param',
{param: '@param'},
{
login: {
method: 'POST'
},
logout: {
method: 'DELETE'
}
});
var user;
return {
signIn: function () {
user = userRes.login({param: 'login'}, {"email": "SomeName@MyDomain.com", "password": "test1"});
userRes.get({param: '1'});
},
userRes.login在响应中有set-cookie标头 userRes.get不发送刚刚收到的cookie。
干杯
答案 0 :(得分:1)
由于您的API位于不同的域中,因此在这种情况下您无法使用Cookie。我们已经尝试过,但我们没有说明这一点没有办法,不仅它不适用于CORS,而且如果嵌入iframe它也不起作用。 iframe技巧主要在狩猎中失败,但它不可靠。
我们通常做的是从API返回JWT(Json Web Token),然后将标题附加到每个API请求Authorization: Bearer JWT
。
此JWT可以使用前端的公钥(并且它将包含用户配置文件)进行解码,并使用后端的私钥进行验证。
JWT很简单,每种语言/技术都有很多库。
Auth0是一个身份验证代理,可以使用任何身份提供程序或自定义数据库进行验证,并使用标准返回JWT。它提供了一个clientID,可用于解码前端的配置文件,以及一个秘密,用于验证后端中的令牌以及client side library来执行此操作。
免责声明:我为auth0工作。