【发布时间】:2015-11-28 00:40:00
【问题描述】:
基于简单令牌的 Rails 身份验证。
客户端服务器向 API 服务器发出请求。 API 服务器返回成功状态、json 编码的正文并最好设置一个 cookie。
# response from API
render json: {user: "user", token: "token_string"}, status: :created
此响应如何也设置 cookie?
我试图将, set_cookie: token 附加到渲染语句。我也有skip_before_filter :verify_authenticity_token, only: :create
最终目标是将令牌存储在浏览器 cookie 中。我不想为令牌使用 HTML5 存储。
【问题讨论】:
-
在这种情况下,客户端应用程序应该设置 cookie,而不是 rails。
-
客户端应用程序接收 json 正文然后设置 cookie?有道理,但那是 API 的标准吗?指望客户端(可以是第 3 方)正确处理令牌?
-
是的,当涉及到令牌身份验证时,它就是这样工作的。在服务器上,您只想检查每个请求是否具有令牌,并且可能具有令牌何时/是否过期的规则。
-
@Nathan 不正确。当您使用安全的 httpOnly cookie 作为 SPA 的 API 的 CSRF/XSS 保护的一部分时,从外观上看,这是 OP 试图做的事情,您不希望客户端能够访问曲奇饼。如果他们做了任何 XSS 脚本也将获得访问权限,并且保护将为 0。这里的安全性基于服务器和浏览器具有客户端代码无法访问的合同。阅读 OWASP 指南了解更多信息:owasp.org/index.php/…
标签: ruby-on-rails json api cookies jwt