我在json API Rails应用上工作并使用Devise身份验证。
在创建用户后的RegistrationsController#create
中,我致电sign_in(resource_name, resource)
。正如我在Firebug中看到的那样,API服务器返回带有加密会话数据的cookie _app_session
。
def create
sign_out
build_resource
if resource.save
sign_in resource_name, resource
hash = {
:last_profile => resource.last_profile,
:settings => current_user.owner_hash
} # it contains actual values for not nil current_user
render json: hash
else
clean_up_passwords(resource)
render status: 403, json: resource.errors
end
end
然后在后续API请求require_current_user
过滤器触发器上,尽管我在请求中看到了相同的Cookie。
class ApplicationController < ActionController::Base
def require_current_user
return if current_user
render :status => 403, :text => I18n.t("errors.messages.login_required")
end
# ...
end
有什么问题?