【问题标题】:use current_user in ActionController在 ActionController 中使用 current_user
【发布时间】:2016-03-18 15:20:00
【问题描述】:

我想从第三方 gem 覆盖控制器(继承自 ActionController)的一些方法。
我的问题是我无法访问 current_user,因为控制器不是从 ApplicationController 继承的。
有什么方法可以访问这个控制器中的 current_user 吗?

编辑:

第 3 方宝石 -> spree_api

在 spree_api 中,我们必须为每个请求提供一个 api_key,但我想使用一些不需要任何特殊权限且可以由来宾用户调用的方法。所以我跳过了像这样的方法的身份验证:

module Spree
  module Api

    ProductsController.class_eval do
      skip_before_action :authenticate_user, :only => :index

      def index 
      ...
      current_user # -> undefined local variable or method `current_user'
      ....
      end
end

【问题讨论】:

  • 您使用的 3rd 方 gem 是什么?
  • 第三方宝石:spree_api
  • 您使用的是哪个控制器??通过提供尽可能多的信息来帮助我们帮助您,以便我们识别和解决您的问题。 “gem”中的“控制器”没有帮助。
  • 我想在 productsController 中使用 current_user,索引操作。
  • 您可以包含Devise::Controllers::Helpers 以从设计中获取current_user 方法。但是,您应该提供更多详细信息(请编辑问题!)关于您想要实现的目标。

标签: ruby-on-rails ruby devise controller


【解决方案1】:

要找到当前用户控制器需要有一些东西来识别用户实体。 如果是 API,这就是 api_key。 在大多数其他情况下,它是通过浏览器与请求标头一起发送的令牌,该令牌设计的 current_user 方法读取并识别用户。

您可以跳过不需要用户的用户身份验证(请求中的 api_key),例如 ProductsController 等。但您肯定需要其他用户(例如 CheckoutController 等)中的用户(因此也需要 api_key)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-07
    • 1970-01-01
    • 1970-01-01
    • 2012-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多