복붙노트

[RUBY-ON-RAILS] 어디 유증 구현 "authenticate_user가!" 방법?

RUBY-ON-RAILS

어디 유증 구현 "authenticate_user가!" 방법?

어디 authenticate_user의 유증 구현입니다! 방법?

나는 그것을 찾고있는 지금까지 그것을 발견하지 않았습니다.

해결법

  1. ==============================

    1.그것은 lib 디렉토리 / 궁리 / 컨트롤러 / helpers.rb1에이고 (사용자 만 가능 접미사 중 하나 인) 동적으로 생성한다 :

    그것은 lib 디렉토리 / 궁리 / 컨트롤러 / helpers.rb1에이고 (사용자 만 가능 접미사 중 하나 인) 동적으로 생성한다 :

    def self.define_helpers(mapping) #:nodoc:
        mapping = mapping.name
    
        class_eval <<-METHODS, __FILE__, __LINE__ + 1
          def authenticate_#{mapping}!(opts={})
            opts[:scope] = :#{mapping}
            warden.authenticate!(opts) if !devise_controller? || opts.delete(:force)
          end
    
          def #{mapping}_signed_in?
            !!current_#{mapping}
          end
    
          def current_#{mapping}
            @current_#{mapping} ||= warden.authenticate(:scope => :#{mapping})
          end
    
          def #{mapping}_session
            current_#{mapping} && warden.session(:#{mapping})
          end
        METHODS
    
        ActiveSupport.on_load(:action_controller) do
          helper_method "current_#{mapping}", "#{mapping}_signed_in?", "#{mapping}_session"
        end
      end
    
  2. ==============================

    2.당신이 레일에 유증을 추가 할 때, 당신은 일반적으로 설정 / routes.rb 추가 할 것입니다 :

    당신이 레일에 유증을 추가 할 때, 당신은 일반적으로 설정 / routes.rb 추가 할 것입니다 :

    devise_for :user
    

    이것은 고안 매퍼 클래스에 정의되어 있습니다.

    모든 자원이 devise_for로 전달에 대한 Devise.add_mapping 호출하는

    유증 모듈의 add_mapping 방법은 이후에 다른 답변에서 논의로 인증을 정의하는 define_helpers를 호출하는, 정의된다.

  3. ==============================

    3.그것은 여기에 몇 가지 메타 프로그래밍을 사용하여 선언 있어요 - https://github.com/plataformatec/devise/blob/master/lib/devise/controllers/helpers.rb#L46-49

    그것은 여기에 몇 가지 메타 프로그래밍을 사용하여 선언 있어요 - https://github.com/plataformatec/devise/blob/master/lib/devise/controllers/helpers.rb#L46-49

    class_eval <<-METHODS, __FILE__, __LINE__ + 1
      def authenticate_#{mapping}!(opts={})
        opts[:scope] = :#{mapping}
        warden.authenticate!(opts) if !devise_controller? || opts.delete(:force)
      end
      ...
    end
    
  4. from https://stackoverflow.com/questions/9272272/where-is-devise-implementation-of-authenticate-user-method by cc-by-sa and MIT license