1

私はプロジェクトで Devise をいじっていますが、それがどのように機能するかをよりよく理解しようとしています。特にセッションコントローラーは、私が理解できないいくつかのことを行っています:

class Devise::SessionsController < ApplicationController
  def new
    # What benefit is this providing over just "resource_class.new"?
    self.resource = resource_class.new(sign_in_params)
    clean_up_passwords(resource)
    # What is "serialize_options" doing in the responder?
    respond_with(resource, serialize_options(resource))
  end

  def create
    self.resource = warden.authenticate!(auth_options)
    set_flash_message(:notice, :signed_in) if is_navigational_format?
    sign_in(resource_name, resource)
    respond_with resource, :location => after_sign_in_path_for(resource)
  end
  ...

  protected
  ...

  def serialize_options(resource)
    methods = resource_class.authentication_keys.dup
    methods = methods.keys if methods.is_a?(Hash)
    methods << :password if resource.respond_to?(:password)
    { :methods => methods, :only => [:password] }
  end

  def sign_in_params
    devise_parameter_sanitizer.sanitize(:sign_in)
  end
end

これらの方法は、ある種のセキュリティを追加していると思います。彼らが何を防御しているのか正確に知りたいだけです。

4

1 に答える 1