サーチ…


前書き

Deviseは非常にパワフルな宝石です。インストール直後にサインアップ、サインイン、サインアウトをすることができます。さらに、ユーザーはアプリケーションに認証と制限を追加できます。ユーザーが使用したい場合、Deviseも独自の見解を持っています。ユーザーは、必要と要件に応じて、サインアップとサインインフォームをカスタマイズすることもできます。あなたが初めての場合は、独自のログインを実装することをお勧めします。

備考

rails generate devise:installを使用してdevise configsを生成するとき、deviseは端末上で一連の命令を実行するよう指示します。

すでにUSERモデルがある場合、このコマンドを実行すると、 rails generate devise USERは既存のUSERモデルに必要な列を追加します。

このヘルパーメソッドbefore_action :authenticate_user!使用してくださいbefore_action :authenticate_user!あなたのコントローラーの上部にuserがログインしているかどうかをチェックします。そうでない場合は、サインインページにリダイレクトされます。

Deviseを使用した認証

gemfileにgemを追加する:

gem 'devise'

次に、 bundle installコマンドを実行します。

必要な設定ファイルを生成するには、コマンド$ rails generate devise:installを使用します。

各環境でDeviseメーラーのデフォルトURLオプションを設定する開発環境で次の行を追加します:

config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }

あなたのconfig/environments/development.rb

同様に本番config/environments/production.rbこのconfig/environments/production.rbファイルを編集してadd

config.action_mailer.default_url_options = { host: 'your-site-url'}

$ rails generate devise USERここで、 USERは認証を実装するクラス名です。

最後に、 rake db:migrateを実行rake db:migrateと、すべて設定されます。

カスタムビュー

ビューを設定する必要がある場合、すべてのビューをアプリケーションにコピーrails generate devise:viewsジェネレータを使用できます。その後、必要に応じて編集することができます。

アプリケーション内に複数のDeviseモデル(UserやAdminなど)がある場合、Deviseはすべてのモデルで同じビューを使用しています。 Deviseは、ビューをカスタマイズする簡単な方法を提供します。 config/initializers/devise.rbファイル内でconfig.scoped_views = trueconfig/initializers/devise.rbます。

ジェネレータを使用してスコープ付きビューを作成することもできます。rails rails generate devise:views users

登録可能なモジュールや確認可能なモジュールのように、いくつかのビューセットしか生成しない場合は、-vフラグを使用しrails generate devise:views -v registrations confirmations

デバイズコントローラフィルタとヘルパー

deviseを使用してユーザ認証を行うコントローラを設定するには、このbefore_actionを追加します(あなたのデバイスモデルが「ユーザ」であると仮定します)。

before_action :authenticate_user!

ユーザーがログインしているかどうかを確認するには、次のヘルパーを使用します。

user_signed_in?

現在ログインしているユーザーの場合は、次のヘルパーを使用します。

current_user

このスコープのセッションにアクセスできます。

user_session

  • あなたのDeviseモデルがUserではなくMemberと呼ばれる場合、上記のusermember

オムニウス

まず、あなたのauth戦略を選択し、それをGemfile追加します。戦略のリストはこちら: https : //github.com/intridea/omniauth/wiki/List-of-Strategies

gem 'omniauth-github', :github => 'intridea/omniauth-github'
gem 'omniauth-openid', :github => 'intridea/omniauth-openid'

あなたはレールミドルウェアに次のように追加することができます:

Rails.application.config.middleware.use OmniAuth::Builder do
  require 'openid/store/filesystem' 
  provider :github, ENV['GITHUB_KEY'], ENV['GITHUB_SECRET']
  provider :openid, :store => OpenID::Store::Filesystem.new('/tmp')
end

デフォルトでは、OmniAuthはルートに/auth/:providerを追加し、これらのパスを使用して開始することができます。

デフォルトでは、障害が発生した場合、omniauthは/auth/failureリダイレクトします

has_secure_password

ユーザーモデルの作成

rails generate model User email:string password_digest:string

ユーザモデルにhas_secure_passwordモジュールを追加する

class User < ActiveRecord::Base
  has_secure_password
end

パスワードで新しいユーザーを作成できるようになりました

user = User.new email: '[email protected]', password: 'Password1', password_confirmation: 'Password1'

authenticateメソッドでパスワードを確認する

user.authenticate('somepassword')  

has_secure_token

ユーザーモデルの作成

# Schema: User(token:string, auth_token:string)
class User < ActiveRecord::Base
  has_secure_token
  has_secure_token :auth_token
end

新しいユーザーを作成すると、トークンとauth_tokenが自動的に生成されます

user = User.new
user.save
user.token # => "pX27zsMN2ViQKta1bGfLmVJE"
user.auth_token # => "77TMHrHJFvFDwodq8w7Ev2m7"

regenerate_tokenregenerate_auth_tokenを使用してトークンを更新できます

user.regenerate_token # => true
user.regenerate_auth_token # => true


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow