Rails3 認証エンジン「devise」
こんにちは。Rails研究員の[twitter:@gc_locks]です
認証エンジンのdeviseが便利すぎて記事が書きたくなりました。
GitHub - plataformatec/devise: Flexible authentication solution for Rails with Warden.
特に、今回はTwitter認証をdeviseでやってみたいと思います。
まずは、普通に /Gemfile に
gem 'devise'
と書き、
$ bundle install
で、インストールしましょう。
ここで、後述のOauth認証をするためにバージョンは1.2以上である必要があります。
バージョンが低いときは
gem 'devise', '1.3.4'
のように指定しましょう。
そして、
$ rails g devise:install
で環境の構築は終了です。
すると、以降から generator に devise という、認証機構がついた model が使えるようになり
$ rails g devise (モデル名)
で呼び出せます。
まずは、何も考えず SimpleUser というモデルを作ってみます。
$ rails g devise SimpleUser
ちょっと、routes を確認してみます。
$ rake routes new_simple_user_session GET /simple_users/sign_in(.:format) {:action=>"new", :controller=>"devise/sessions"} simple_user_session POST /simple_users/sign_in(.:format) {:action=>"create", :controller=>"devise/sessions"} destroy_simple_user_session GET /simple_users/sign_out(.:format) {:action=>"destroy", :controller=>"devise/sessions"} simple_user_password POST /simple_users/password(.:format) {:action=>"create", :controller=>"devise/passwords"} new_simple_user_password GET /simple_users/password/new(.:format) {:action=>"new", :controller=>"devise/passwords"} edit_simple_user_password GET /simple_users/password/edit(.:format) {:action=>"edit", :controller=>"devise/passwords"} PUT /simple_users/password(.:format) {:action=>"update", :controller=>"devise/passwords"} cancel_simple_user_registration GET /simple_users/cancel(.:format) {:action=>"cancel", :controller=>"devise/registrations"} simple_user_registration POST /simple_users(.:format) {:action=>"create", :controller=>"devise/registrations"} new_simple_user_registration GET /simple_users/sign_up(.:format) {:action=>"new", :controller=>"devise/registrations"} edit_simple_user_registration GET /simple_users/edit(.:format) {:action=>"edit", :controller=>"devise/registrations"} PUT /simple_users(.:format) {:action=>"update", :controller=>"devise/registrations"} DELETE /simple_users(.:format) {:action=>"destroy", :controller=>"devise/registrations"}
デフォルトでたくさん routes が出来ています。
早速、migrate して、サーバを立てましょう。
$ rake db:migrate
$ rails s
上述の routes の http://localhost:3000/simple_users/sign_in にアクセスしてみましょう。
ね、簡単でしょ?
文言などを変えたいときは、
$ rails g devise:views
でテンプレートを生成して、 /app/view/devise を書き換えましょう。