こんにちは、hachi8833です。前回の「ワークフローのカスタマイズ」もくじ」に続き、Devise How-To Wikiの「認証方法のカスタマイズ」部分の目次に概要や用途を加えました。OmniAuthの目次も含まれています。
今後も随時更新いたしますので、原文更新にお気づきの方は@techrachoまでお知らせいただけると助かります。
もくじリンク
- 「ワークフローのカスタマイズ」
- 「認証方法のカスタマイズ」「OmniAuth」(本記事)
- 「ビュー/コンテンツのカスタマイズ」「特権/認証」
- 「テスト」「特殊な設定」
- 「アプリでのその他の設定」「JavaScript」
- 「他の認証プラグインからの移行」「アップグレード」
Devise How-To: 認証方法のカスタマイズ
※新しい順に並べ替えてあります。
ゲストユーザーを作成する
- 25 May 2017 · 32 revisions
- How To: Create a guest user
ゲストのUserオブジェクトを使って、ログインしていない一般ユーザーでもセッションを管理できるようにする方法です。
ここではゲストのオブジェクトを作成してidをsession[:guest_user_id]
でデータベースに保存し、current_or_guest_user
でゲストかどうかを判定します。
Recaptcha
- 1 Feb 2017 · 47 revisions
- How To: Use Recaptcha with Devise
ReCaptcha gemを使って、ボット除けの画像キャプチャ認証を導入する方法が紹介されています。
パスワードなしでアカウントを編集できるようにする
- 14 Jan 2017 · 66 revisions
- How To: Allow users to edit their account without providing a password
独自のコントローラを作成する方法と、Devise::RegistrationsController
でupdate_resource
をオーバーライドする方法の2つが紹介されています。
サブドメインを使う
- 2 Dec 2016 · 7 revisions
- How To: Use subdomains
Railsアプリでサブドメインを使っている場合にInternet Explorerで生じるエラーの回避方法が紹介されています。設定変更のみで行なえます。
ユーザー名とメールアドレスのどちらでもサインインできるようにする
- 8 Nov 2016 · 60 revisions
- How To: Allow users to sign in using their username or email address
サインインのほか、パスワード変更時にもユーザー名とメールアドレスの両方を使えるようにする方法や、Gmailやme.comで使われている「メールアドレスのユーザー名部分もユーザー名として使えるようにする方法」も紹介されています。
MySQLとMongoid向けの注意事項も含まれています。
LDAPで認証する
- 27 Oct 2016 · 7 revisions
- How To: Authenticate via LDAP
コード例ではwarden(Deviseを支えるRackの認証フレームワーク)を呼んでいます。
(old)シンプルなトークン認証の例
- 2 Sep 2016 · 14 revisions
- How To: Simple Token Authentication Example
この記事は既に古くなっている(TokenAuthenticatable
がDeviseから削除されたため)ので、Gistのコードを参照するようにとのことです。
Deviseで単一ユーザーシステムを構築する
- 10 Aug 2016 · 10 revisions
- How To: Set up devise as a single user system
個人ブログアプリなど、ユーザーが1人に限定されたプライベートアプリをDeviseで構築する際に、新規ユーザー登録ページを非公開にする方法です。
ユーザーが1人も登録されていない状態で一般ユーザーが登録ページにアクセスしようとするとトップにリダイレクトされ、ユーザーが1人登録済みの場合はsign_in
ページにリダイレクトされます。
ユーザーがメールアドレス以外の文字列を使ってサインインできるようにする
- 12 Mar 2016 · 8 revisions
- How To: Allow users to sign in with something other than their email address
メールアドレスをユーザー名に使って欲しくない場合の方法です。config/initializers/devise.rb
の設定変更かモデルの変更で行えます。Strong Parameter周りの変更も必要です。あとは必要に応じてビューのレイアウトやdevise.*.ymlのメッセージを変更します。
HTTP Basic認証
- 25 Jun 2015 · 6 revisions
- How To: Use HTTP Auth Basic with Devise
DeviseでいわゆるBASIC認証を行う方法が簡単に紹介されています。なお、BASIC認証やdigest認証はDeviseがなくてもRailsの機能だけでできます。
HTTPS(SSL)を使う
- 6 Apr 2015 · 11 revisions
- How To: Use SSL (HTTPS)
DeviseのビューをHTTPSで保護する方法です。Devise 1.0と1.1で方法が少し異なります。
ただし、この方法で部分的に保護するより、サイト全体をHTTPSで保護することが推奨されています。
メールアドレスだけでユーザー登録を開始できるようにする
- 26 Oct 2014 · 24 revisions
- How To: Email only sign up
フォームでメールアドレスが入力されたら確認メールをユーザーに送信し、ユーザーがメールのリンクからWebサイトに戻ってパスワードを設定できるようにします。
手順1を省略すると、登録フォームでパスワードも入力できるようになります。
Rails 4の場合は、「確認をオーバーライドして、確認中にユーザーが独自のパスワードを選べるようにする」も参照してください。
HTTP 認証
- 15 Dec 2012 · 2 revisions
- How To: Use HTTP Basic Authentication
DeviseでのBASIC認証、digest認証、NginxやApacheと併用する場合の方法が紹介されています。
※BASIC認証やdigest認証はDeviseがなくてもRailsの機能だけでできます。
Deviseでリモート認証する
- 16 Nov 2012 · 1 revision
- How to: Remote authentication with Devise
Remote authentication with deviseへのリンクだけが貼られています。Railsで外部リソースを使う場合の外部リソースの認証方法です。Wardenのstrategyを作成することで行います。
メールアドレスの大文字小文字を区別しないようにする
- 9 Dec 2011 · 5 revisions
- How To: Use case insensitive emails
Deviseの設定を追加するだけで、ユーザー登録、サインイン、パスワードを忘れたときの処理などでメールアドレスの大文字小文字を区別しないようになります。
User.find_by_email
は大文字小文字を区別するので、代わりにUser.find_for_authentication
を使う必要があります。
OmniAuth
※並べ替えは行っていません。
OmniAuth: 概要
- 12 Feb 2017 · 171 revisions
- OmniAuth: 概要(原文)
Facebookを例に、Rails + Devise + OmniAuthの基本的な利用方法を解説しています。OmniAuth以外の認証をオフにする場合の方法やトラブルシューティングも紹介されています。
171回もの更新が行われており、需要の高さがうかがえます。
OmniAuth認証を複数のモデルで共用する方法
- 3 Mar 2017 · 8 revisions
- OmniAuth認証を複数のモデルで共用する方法(原文)
Devise + OmnuAuthはデフォルトでは1つのモデルでしか利用できません。これを複数モデルで共有できるようにする方法を紹介しています。
OmniAuth: 結合テスト
- 12 Nov 2016 · 21 revisions
- OmniAuth: 結合テスト(原文)
OmniAuthをモック化して結合テストに使う方法を紹介しています。元記事はDeviseではなくOmniAuthのWikiです。
Omniauthableでのサインアウトとセッション保持
- 9 Dec 2013 · 5 revisions
- Omniauthable, sign out action and rememberable
Devise + Omniauthableではデフォルトでsign_out
ルーティングが追加されません。このルーティングの追加方法や、Devise::Controllers::Rememberable
でセッションを保持する方法を紹介しています。
補足
- 原文ではsign inとlog in、sign outとlog outがそれぞれ同じ意味で使われています。訳文では、紛らわしくなる場合を除き、原則として原文に沿ったカタカナを使用します。
- 同じ手順が複数のカテゴリに含まれていることもあります(原文に従っています)
- 原文が更新されていることにお気づきの場合は、ぜひ@techrachoまでお知らせください。更新いたします。
関連記事(Devise)
- [Rails] Devise Wiki日本語もくじ1「ワークフローのカスタマイズ」(概要・用途付き)
- Rails4: 古いdeviseのパスワードを新しいdeviseで使う方法
- Rails 3.1.0.rc8にしようとしたらdeviseが違うバージョンのbcryptに依存していてアップデートできない
- [Rails 3] deviseで使うモデルにfind_by_で始まる名前のscopeを定義するとrake db:migrate:resetが通らない
- [Rails 3] 失敗しないmigrationを書こう
- [Rails 3] Appサーバが複数だとdevise_openid_authenticatableで認証できない