我用Java编写了一个REST-API,并且已经使用Spring Security保护了这个API。程序是这样的:
这样可以正常工作,但我已经读过(使用Node.JS / Passport.js / Express.js),内部cookie的会话对象可以在没有任何自定义代码的情况下传输出来。
我现在的问题是,如果有更好的方法,那么前端/客户端不需要一直将标记设置到标头中。
答案 0 :(得分:3)
通常基于令牌的身份验证优于基于cookie的优势。
您可以使用中间件层实现此目的
这是一篇很好的帖子 - https://auth0.com/blog/2014/01/07/angularjs-authentication-with-cookies-vs-token/
答案 1 :(得分:2)
服务器端,如果有auth令牌,我通常首先检查标头。如果没有,我然后检查cookie作为后备。
如果您想使用Cookie,那么在第2步,您需要在响应中添加Set-Cookie header,以便浏览器知道他们必须存储Cookie。完成后,无需添加标题客户端,因为浏览器将每个请求发送cookie。您需要添加CSRF保护(here是一个很好的例子)。