先日、toytter(10分で作ったTwitterもどき)をrails-2.0で作り直した時、acts_as_authenticatedが使えて安心してたんですが、実はacts_as_authenticatedのインストール時に
DEPRECATED: Use restful_authentication instead. Or, ask me for commit rights if you wish to maintain this plugin.
って表示されているのを見落としてました。
acts_as_authenticatedはもうメンテナンスしないから、今後はrestful_authenticationを使ってね、ってことらしい
というわけで、Rails2.0時代の認証系スタンダードになるかもしれないrestful_authenticationを使ってみるよ
まずはインストールから
$ ./script/plugin discover $ ./script/plugin install restful_authentication
インストール時にも表示される、READMEの内容が今回はなんか長い。
そして、各種ファイルを配置してくれるgenerateコマンドの使い方がこちら
$ ./script/generate authenticated user sessions --include-activation --stateful
なんかsessionsとか書いてあるし、オプションつけられたりするみたいだし、いろいろかわってる。
user
モデル名。同じ名前で登録関係のコントローラも作成される。以前のデフォルトでは、userモデルと登録のためのaccountコントローラだったけど、今回は両方とも同じ名前で作られる
sessions
ログインログアウト用コントローラ名。ログイン情報自体を一つのリソースとしてみなしているんだね。面白い。
--include-activation
メール認証を行うかどうか。最初の登録は仮登録で、届いたメールに書かれてるアドレスにアクセスすると登録が完了するってやつだね。以前は公式でやり方は紹介されていたけど、自分で実装する必要があった部分。でもobserver使うやり方は好きじゃないので、うちでは使ってなかった
--stateful
プラグインacts_as_state_machineを使ってユーザの状態管理をする。仮登録状態とか、正会員とか、退会とかね。そんな状態をいくつか定義しておいて、状態Aから状態Bに変わった時にはCという処理を行う、といったことをacts_as_state_machineを使うことで簡潔に書くことができる。利用には別途acts_as_state_machineのインストールが必要
generateで、いつものように大量のファイルが作成される。今回はとりあえずやれることは全部知っておきたいので、activationもstatefulも両方使うことにします。なのでacts_as_state_machineもインストールしておきます。
$ ./script/plugin install http://elitists.textdriven.com/svn/plugins/acts_as_state_machine/trunk/
それと、rspec使っている方は先にrspec on railsを入れておくと、generate時に自動でRSpec用のテストが生成されます。
とりあえず、ここで動かしてみる。
ユーザーの登録は/users/newから。
activationをするために、routes.rbに次の一行を追加
map.connect "activate/:activation_code", :controller => "users", :action => "activate"
これを追加せずに、直接/users/activate?activation_code=XXXみたいにURLを叩いても、usersにresourcesを設定しているので、showアクションが呼ばれてしまってactivationできない。
activationを通すことで、Userモデルのstateがpendingからactiveに変わって、ログインできるようになった。
ログインが/sessions/newで、ログアウトが/sessions/destroyになってます。
stateがpendingからactiveに変わる仕組みがacts_as_state_machineのお仕事。このプラグイン結構面白いので、ほかでもちょくちょく使ってます。今度詳しく説明します。
acts_as_authenticatedの時と同じで、カスタマイズしないでそのまま使えるものではないけれど、restの仕組みを勉強するのには良い教材なんじゃないかと思います。まずはインストールしてソースを読んでみることをおすすめします!
押忍
※このエントリはZDNETブロガーにより投稿されたものです。朝日インタラクティブ および ZDNET編集部の見解・意向を示すものではありません。