なお、OmniAuth との連携については wiki ページに情報があります。
最終的には OmniAuth との連携の形に持っていきたいと思います。
まず最初に
https://github.com/plataformatec/devise の Installation の項目にある部分:- Devise の gem のインストール
- Gemfile への追記: gem 'devise'
- rails g devise:install
- rails g devise user
- rails g devise:views
"rails g devise:install" の後にメッセージが出ます。要約すると:
- config.action_mailer.default_url_options を設定せよ
- config/environments/development.rb だと、"{ :host => 'localhost:3000' }" とか
- config/routes.rb にて、root_url を設定(root :to を定義)せよ
- トップページを表現する適当な controller を用意して、"...#index" とかにしておけば良いはず
- app/views/layouts/application.html.erb (つまり global_layout)で notice, alert が表示されるようにせよ
- こんな感じ。"<p class="notice"><%= notice %></p>"
- heroku 上にデプロイする場合には、config/application.rb にて config.asset.initialize_on_precompile = false を宣言せよ
この devise:install 時のメッセージに従って作業すると1/3位の設定が終わります。
もう一つの準備
とりあえず「認証によって保護されるリソース」 を考えないと認証の意味が無いので、todo モデルを作っておきます。rails g scaffold todo summary:string content:text importance:integer rake db:migrateこの todo を、認証した user だけがアクセスできるようにします。
リソースの保護
リソース todo へのアクセスを認証で制御するには、- app/controllers/todos_controller.rb の修正
- before_filter :authenticate_user!
- routes.rb の修正
- devise_for :users
また、ログイン情報入力のための画面を用意した場合、
- ログインしていないなら、ログイン情報入力画面
- ログイン済みなら、 ログイン後のトップ画面
このような時には devise で提供されている current_user メソッドを使って、
class PortalController < ApplicationControllerのようなことができます。
def index
if current_user
redirect_to :user_root
return
end
end
end
0 件のコメント:
コメントを投稿