我正在 Rails 中构建 API 并使用 Devise 进行身份验证。我的前端是一个 AngularJS 应用程序。我能够登录并在 Rails 端创建一个新 session ,但是当我尝试访问 UsersController 中的 current_user 方法时,它为零。我在这里遗漏了什么吗?
感谢任何帮助。谢谢
session Controller :
class SessionsController < Devise::SessionsController
respond_to :json
def create
resource = warden.authenticate!(:scope => resource_name, :recall => "#{controller_path}#failure")
render :status => 200,
:json => { :success => true,
:info => "Logged in",
:user => current_user
}
end......
用户 Controller :
class UsersController < ApplicationController
before_filter :authenticate_user!, :except => [:create, :show]
respond_to :json
def show
render :json => {:info => "Current User", :user => current_user}, :status => 200
end....
最佳答案
我必须定义current_user
并在我的API中运行自定义身份验证过滤器才能直接从典狱长那里获取信息。我从几个地方的集合中得到了以下信息here和 here以及使用调试器进行大量试验和错误。
before_filter :api_session_authenticate!
private
def current_user
warden.user
end
def warden
env['warden']
end
def api_session_authenticate!
return not_authorized unless authenticate
end
def authenticate
warden.athenticated?
end
def not_authenicated
#render error messages and 401 status
end
关于ruby-on-rails - 使用 Rails API 进行设计 - current_user,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26723595/