如何在Rails中响应application / json类型的请求时设置cookie?
控制器操作按预期工作,但没有设置cookie,并且响应中没有Set-Cookie标头。任何帮助将不胜感激。
控制器:
class SessionsController < ApplicationController
def create
@user = User.find_by(email: params[:session][:email].downcase)
if user && user.authenticate(params[:session][:password])
log_in(user)
.
.
cookies[:test] = 'Test cookie'
render json: @user
#render json: @user, set_cookie: 'test' #Also tried this
else
render text: 'Wrong username and/or password', status: 401
end
end
end
路线:
Rails.application.routes.draw do
.
.
resources :sessions, :defaults => { :format => :json }
end
答案 0 :(得分:14)
我遇到了同样的问题。 以下是我的解决方法:
response.set_cookie "name", "nic"
我也想出了问题的原因。伪造保护在响应组合之前使会话无效。
要使用cookies
方法,您需要跳过令牌的验证验证:
skip_before_action :verify_authenticity_token