0

ユーザーが Facebook や Twitter などを使用せずにサインインして登録できるようにする omniauth-identity に出会いました。

モデルを作成する必要があるステップがありますIdentity(私はこのRailscastに従っています):

class Identity < OmniAuth::Identity::Models::ActiveRecord

  validates :name, presence: true, length: { maximum: 50 }
  VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
  validates :email, presence:   true,
                format:     { with: VALID_EMAIL_REGEX },
                uniqueness: { case_sensitive: false }
  validates :password, presence: true, length: { minimum: 6 }
  validates :password_confirmation, presence: true
end

Userこれで、モデルとログインおよび登録システム ( Ruby on Rails チュートリアルに従って作成)が既にあります。

ユーザー.rb:

class User < ActiveRecord::Base
  attr_accessible :name, :email, :password, :password_confirmation

  has_secure_password

  before_save { |user| user.email = email.downcase }
  before_save :create_remember_token

  validates :name, presence: true, length: { maximum: 50 }
  VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
  validates :email, presence:   true,
                    format:     { with: VALID_EMAIL_REGEX },
                    uniqueness: { case_sensitive: false }
  validates :password, presence: true, length: { minimum: 6 }
  validates :password_confirmation, presence: true

  private

  def create_remember_token
   self.remember_token = SecureRandom.urlsafe_base64
  end

だから私は少し混乱しています。モデル内の認証に関係する行を削除する必要がありますかUser(例: 検証など、ユーザー テーブルのattr_accesibleおよびフィールド)。 create_remember_tokennameemail

また、 sessions_helper.rbも削除しますか?

module SessionsHelper
  def sign_in(user)
    cookies.permanent[:remember_token] = user.remember_token
    self.current_user = user
  end

  def signed_in?
    !current_user.nil?
  end

  def sign_out
    self.current_user = nil
    cookies.delete(:remember_token)
  end

  def current_user=(user)
    @current_user = user
  end

  def current_user
    @current_user ||= User.find_by_remember_token(cookies[:remember_token])
  end

  def current_user?(user)
    user == current_user
  end

  def signed_in_user
    unless signed_in?
      store_location
      redirect_to signin_url, notice: "Please sign in."
    end
  end

  def redirect_back_or(default)
    redirect_to(session[:return_to] || default)
    session.delete(:return_to)
  end

  def store_location
    session[:return_to] = request.url
  end
end

間違っている場合は修正してください。omniauth-identityただし、それも処理すると思います(一部を除くcurrent_user.

4

1 に答える 1

0

Identity モデルの作成は、主に複数のプロバイダーで認証する場合に役立ちます。これを行う方法の良い説明は次のとおりです。

https://github.com/intridea/omniauth/wiki/Managing-Multiple-Providers

User モデルと Identity モデルに何が必要かという質問に答えます。

于 2013-02-21T16:55:02.510 に答える