ruby-on-rails - 使用 Rails API 进行设计 - current_user

标签 ruby-on-rails ruby devise

我正在 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中运行自定义身份验证过滤器才能直接从典狱长那里获取信息。我从几个地方的集合中得到了以下信息herehere以及使用调试器进行大量试验和错误

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/

相关文章:

ruby-on-rails - rails : Microservice architecture with dedicated authorization service and app services using Knock (JWT)

ruby - 我如何在 ruby​​ 中编写这个正则表达式? (解析 Gmail API 字段)

Python vs Groovy vs Ruby? (基于相关标准)

ruby-on-rails - 设计 : translation missing: fr. devise.failure.user.not_found_in_database

ruby-on-rails - Rails 设计自定义注册和登录在同一页面问题

ruby-on-rails - Rails 3.1 simple_form 提交样式 css

javascript - JQuery +thumbs_up gem 渲染投票数?

ruby-on-rails - Rails and Devise - 访问 session 数据

ruby-on-rails - Rails 5 弃用警告并向初始化程序添加代码?

ruby-on-rails - 使用 link_to 创建分层模型的链接