Spring 安全性 - REST API - 令牌与 cookie
Spring Security - REST API - token vs. cookie
我在 Java 中编写了一个 REST- API 并且我已经使用 Spring 安全性保护了这个 API。程序是这样的:
- 前端在后端调用/login RestService
- 后端将令牌返回给前端
- 在每个 REST- API 后端调用中,令牌必须放置在 header
这很好用,但我读到也有可能(使用 Node.JS/Passport.js/Express.js) session object 与里面的cookie可以开箱即用,无需任何自定义代码。
我现在的问题是,是否有更好的方法,让 frontend/client 不需要为任何请求一直将令牌设置到 header。
通常基于令牌的身份验证优于基于 cookie 的身份验证。
你可以使用中间件层来实现这个
这里有好东西Post - https://auth0.com/blog/2014/01/07/angularjs-authentication-with-cookies-vs-token/
服务器端,我通常先检查 headers 是否有授权令牌。如果没有,我会检查 cookie 作为后备。
如果您想使用 cookie,那么在您的第 2 步中,您需要添加一个 Set-Cookie header to the response, so that browsers know they must store a cookie. Once done, no need to add a header client-side, since browsers will send cookies each request. You'll need to add a CSRF protection though (here 是一个很好的例子)。
我在 Java 中编写了一个 REST- API 并且我已经使用 Spring 安全性保护了这个 API。程序是这样的:
- 前端在后端调用/login RestService
- 后端将令牌返回给前端
- 在每个 REST- API 后端调用中,令牌必须放置在 header
这很好用,但我读到也有可能(使用 Node.JS/Passport.js/Express.js) session object 与里面的cookie可以开箱即用,无需任何自定义代码。
我现在的问题是,是否有更好的方法,让 frontend/client 不需要为任何请求一直将令牌设置到 header。
通常基于令牌的身份验证优于基于 cookie 的身份验证。
你可以使用中间件层来实现这个
这里有好东西Post - https://auth0.com/blog/2014/01/07/angularjs-authentication-with-cookies-vs-token/
服务器端,我通常先检查 headers 是否有授权令牌。如果没有,我会检查 cookie 作为后备。
如果您想使用 cookie,那么在您的第 2 步中,您需要添加一个 Set-Cookie header to the response, so that browsers know they must store a cookie. Once done, no need to add a header client-side, since browsers will send cookies each request. You'll need to add a CSRF protection though (here 是一个很好的例子)。