先日、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編集部の見解・意向を示すものではありません。
勝ち残るIT活用--中堅中小企業の現場からタレントの江口ともみさんをレポーターに、
全国さまざまな業種の企業担当者に聞く!
ZDNet特別企画 ビッグデータ一気読み刻々と生成される大量データを使えてますか?
特設サイトでビッグデータを徹底解説
【セミナー】IBM、Red Hat、サイオス
リーディングカンパニー3社が語る最新動向
管理者は、OS、仮想環境の混在に悩む
クラウド環境に必要な3つの運用サイクル
従来の防御が使えない!?複合的手法による
脅威から企業システムを守るために
「使いたい時、使いたいだけ」を実現
今年検討すべき理想のストレージを考える
仮想化の暗黒大陸を切り拓く
高次元のサーバー性能とHAクラスタリング
インフラ部分からセキュリティを保つ
エージェントレス型ウィルスソフトの力
「創世期」から「成長期」へ突入
国内ベンダーはどう「進化し続ける」のか?
オープンソースの強みを発揮するJBoss
コラボレーションを変えるクラウドサービス
企業システムへの接続を安全、簡単にする
Juniper Networks MAGシリーズ
ANAや商船三井など5社の事例で読み解く
2012年春モデルの情報をいち早く掲載
HPのお得な情報や最新情報が満載
よくある「5つの勘違い」の真実とは?
IT担当者必見の、目覚めの書を公開
入社後の満足と不満足の分かれ目とは?!
納得いく転職をする為の転職活動での留意点
多様なボイスコミュニケーションを実現する
クラウド型プラットフォームとは?
株式会社エイリスト
株式会社サテライトオフィス
EMCジャパン株式会社
ZDNet Japanは、情報システム部門の読者を対象に、ITを活用したビジネス課題の解決策を提供します。技術や製品の解説、ケーススタディ、ホワイトペーパーなどを通じて、情報システム部門の正しい意志決定を支援します。
ITビジネス全般については、CNET Japanをご覧ください。