我正在编写一个通过Web公开某些服务的应用程序,而其他服务作为RESTful服务并使用 Spring Security &用于身份验证和会话处理的 Spring Session 。想知道我们是否需要支持 cookie(SESSION) 以及 x-auth-token 或者我们可以完全删除令牌标头的cookie(知道spring outofbox支持基于内容协商)
答案 0 :(得分:3)
对于Web应用程序,您当然需要cookie支持。浏览器无法自行发回x-auth-token(不像它们在每个请求中通过cookie发送)。同样,对于API,由于多种原因,cookie不是最佳选择。
如果你想同时支持两者,你应该编写一个自定义的HttpSessionStrategy,它应该封装一个CookieHttpSessionStrategy和HeaderHttpSessionStrategy的实例。基于传入的HttpServletRequest对象的url模式(假设您至少对API部分有一个确定性模式),您可以将来自HttpSessionStrategy的所有三个调用委托给适当的嵌套对象,或者HeaderHttpSessionStrategy(用于API调用),或者到CookieHttpSessionStrategy(用于Web浏览器调用)。我在我自己的设置中使用类似的东西,它为我的目的工作正常。
希望它有所帮助!!