restful_authentication

2008年03月25日 23:34
トラックバック (0)   コメント (0)
先日、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の仕組みを勉強するのには良い教材なんじゃないかと思います。まずはインストールしてソースを読んでみることをおすすめします!

押忍
最新エントリー
カテゴリ
月別のアーカイブ
プロフィール
吉見和也(Kazuya Yoshimi)
RAWHIDE.(ローハイド.)取締役兼最高技術責任者。Rubyで開発する心地よさに惚れ、Ruby道を邁進する日々。迷わず行けよ、行けばわかるさ、Ruby道。押忍!
Powered by
 

企画特集

Techno ExchangeTechno Exchange
仮想化技術がグリーンITにもたらすもの
ZDNet Japan Green ITZDNet Japan Green IT
サミットだけでは終わらせない!エンタープライズの取り組みはこれからだ!
DELL連載第4回 〜「Microsoft System Center」DELL連載第4回 〜「Microsoft System Center」
PowerEdgeサーバに最適な運用管理ソリューション後編
ZDNet Japan ホスティング特集ZDNet Japan ホスティング特集
2008年夏のホスティングサービスのトレンドは何?
契約してわかった、iPhoneのさまざまな注意事項
7月11日にソフトバンクモバイルから発売された、アップル製携帯電話「iPhone 3G」。その契約手続きの中で、機種変更時の料金やメールの保存期間など、iPhoneが持つさまざまな注意事項が見えてきた。
フォトレポート:USIMカードはどこに?--「iPhone」開封の儀
ソフトバンクモバイルが7月11日に発売したiPhoneを、編集部が早速入手した。ガジェット恒例の「開封の儀」をお届けする。なお、今回取り上げるのは黒色の8Gバイトモデルだ。
iPhone 3G、発売前夜から祭りのあとまで
iPhone 3Gがついに発売された。ユーザーからの期待は大きく、ソフトバンク表参道、ビックカメラ 有楽町店、ヨドバシカメラマルチメディアAkibaなどの旗艦店舗には多くの人が行列をなした。発売前後の様子を記事とともに振り返る。