[Rails] Devise Wiki日本語もくじ2「認証方法のカスタマイズ」「OmniAuth」(概要・用途付き)

こんにちは、hachi8833です。前回の「ワークフローのカスタマイズ」もくじ」に続き、Devise How-To Wikiの「認証方法のカスタマイズ」部分の目次に概要や用途を加えました。OmniAuthの目次も含まれています。

今後も随時更新いたしますので、原文更新にお気づきの方は@techrachoまでお知らせいただけると助かります。

もくじリンク

  1. 「ワークフローのカスタマイズ」
  2. 「認証方法のカスタマイズ」「OmniAuth」(本記事
  3. 「ビュー/コンテンツのカスタマイズ」「特権/認証」
  4. 「テスト」「特殊な設定」
  5. 「アプリでのその他の設定」「JavaScript」
  6. 「他の認証プラグインからの移行」「アップグレード」

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::RegistrationsControllerupdate_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)

デザインも頼めるシステム開発会社をお探しならBPS株式会社までどうぞ 開発エンジニア積極採用中です! Ruby on Rails の開発なら実績豊富なBPS

この記事の著者

hachi8833

Twitter: @hachi8833、GitHub: @hachi8833 コボラー、ITコンサル、ローカライズ業界、Rails開発を経てTechRachoの編集・記事作成を担当。 これまでにRuby on Rails チュートリアル第2版の監修および半分程度を翻訳、Railsガイドの初期翻訳ではほぼすべてを翻訳。その後も折に触れて更新翻訳中。 かと思うと、正規表現の粋を尽くした日本語エラーチェックサービス enno.jpを運営。 実は最近Go言語が好きで、Goで書かれたRubyライクなGoby言語のメンテナーでもある。 仕事に関係ないすっとこブログ「あけてくれ」は2000年頃から多少の中断をはさんで継続、現在はnote.muに移転。

hachi8833の書いた記事

夏のTechRachoフェア2019

週刊Railsウォッチ

インフラ

ActiveSupport探訪シリーズ