我已经使用Node.js / Express构建了一个API,我目前正在使用我的Angular应用程序。
对于身份验证,我有一个用户名/密码设置,然后返回一个愉快使用的JWT。
现在,我已经花了一些时间(并且阅读such Stormpath articles)我想使用cookies而不是localstorage来存储这些JWT。这就是我的问题开始的地方。
因此,我迄今为止所做的基本上是更新保存和阅读,例如从$window.localStorage['jwtToken'] = token;
保存到$cookies.put('jwtToken', token);
。阅读,从return $window.localStorage['jwtToken'];
到return $cookies.get('jwtToken');
在这个阶段,我想知道是否有人可以帮助我理解一些,善意正确并告诉我任何缺失的知识部分:
1 - 所以除了上面的实际保存和阅读之外,还有什么我需要明确设置 - 我认为是HttpOnly
cookie标志(因此JS无法访问cookie数据) 。
1b - 我是否还需要更新我的节点API,而不是让res.json
执行res.cookie
?
2 - 我还需要设置Secure
cookie标志,以便通过HTTP发送它。所以目前我写了一个简单的authInterceptor,它为每个请求附加一个标头:config.headers['x-access-token'] = token;
。这是否会设置secure
cookie标志?
3 - 所以使用cookies是正确的,因为JS无法触及cookie,因此最小化XSS攻击,但我需要专注于CSRF。为此我想在我的节点api服务器端使用这个CSRF middleware,并将其与XSRF-TOKEN中内置的Angulars一起使用,如here所述。这是一个很好的实现吗?
4 - 在查看Chrome检查器时,我看到包含JWT的cookie,但是HTTP / Secure / Same-Site都被取消了,而Expires说会话。有人可以解释这意味着什么:
任何帮助表示感谢。
感谢。
答案 0 :(得分:0)
$cookies.get('jwtToken');
将无法正常工作... document.cookie = "name=somevalue;secure"