【问题标题】:Cookie vs x-auth-token with application supporting both RESTful and webCookie 与 x-auth-token 以及同时支持 RESTful 和 Web 的应用程序
【发布时间】:2016-06-01 22:46:01
【问题描述】:
我正在编写一个应用程序,它通过 Web 公开一些服务,而其他服务作为 RESTful 服务并使用 Spring Security 和 Spring Session 用于身份验证和会话处理。想知道我们是否需要同时支持 cookie(SESSION) 和 x-auth-token或者我们可以完全摆脱令牌头的cookie(知道spring outofbox支持基于内容协商)
【问题讨论】:
标签:
spring
cookies
spring-security
restful-authentication
spring-session
【解决方案1】:
对于 Web 应用程序,您当然需要 cookie 支持。浏览器不能自己发回 x-auth-token (不像他们通过 cookie 发送每个请求)。同样对于 API,由于多种原因,cookie 不是最佳选择。
如果你想同时支持这两者,你应该编写一个自定义的 HttpSessionStrategy,它应该封装一个 CookieHttpSessionStrategy 和 HeaderHttpSessionStrategy 的实例。根据传入的 HttpServletRequest 对象的 url 模式(假设您至少在 API 部分具有确定性模式),您可以将 HttpSessionStrategy 的所有三个调用委托给适当的嵌套对象,或者委托给 HeaderHttpSessionStrategy(用于 API 调用),或 CookieHttpSessionStrategy(用于 Web 浏览器调用)。我在自己的设置中使用了类似的东西,它对我来说工作得很好。
希望对你有帮助!!