【问题标题】:Trouble understanding how Devise Strategies work难以理解设计策略的工作原理
【发布时间】:2014-02-03 09:44:00
【问题描述】:

在我正在开发的 Rails 应用程序中,需要一种自定义设计策略,该策略将以另一个用户身份登录管理员并允许该管理员轻松重新登录。

我已经搜索了谷歌结果,但没有任何东西真正表明您必须使用自定义策略。

这是我的策略:(config/sign_in_as.rb)

require 'devise/strategies/authenticatable'

module Devise
  module Strategies
    class SignInAs < Authenticatable

      def valid?
        user = User.find_by_id(params[:id])
        user && has_contributor_access? && current_user.can_manage?(user)
      end

      def authenticate!
        resource = User.find_by_id params[:id]

        if resource
          success!(resource)
        else
          fail!("Error")
        end
      end

      private
        def has_contributor_access?
          current_user.school_admin? || current_user.athlete_contributor?
        end
    end
  end
end

Warden::Strategies.add(:sign_in_as, Devise::Strategies::SignInAs)

SignInAsController:

class SignInAsController < ApplicationController
  before_filter :authenticate_user!

  def create
    sign_out(current_user)
    # How to incorporate custom strategy?
    sign_in(:user)
    redirect_to user_root_path
  end
end

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-3 devise warden


    【解决方案1】:

    请通过这个 gem user_impersonate here。它使用您想要的相同策略。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-11
      • 1970-01-01
      • 1970-01-01
      • 2015-09-20
      • 1970-01-01
      • 2021-04-24
      • 1970-01-01
      • 2014-04-08
      相关资源
      最近更新 更多