merb-authを使ってみた

Merbにはmerb-authというのが入っててそいつを使えば認証機能を簡単に実装できるみたいなので試してみた。

下準備

  • merb-gen app でアプリケーションを作成しておく
  • merb-gen resouce hoge とかしてViewとControllerとModelを作っておく
  • rake db:automigrate とかしてマイグレーションしておく
  • merb -iでUserテーブルにユーザを作成しておく

merb -iでユーザの追加をするには以下のようなコマンドをうてばいい

$ merb -i
>> u = User.new(:login => "amacou")
>> u.password = u.password_confirmation = "password" 
>> u.save

merb-authの設定

1.config/router.rbの修正
config/router.rbに以下のような記述を追加する

authenticate do
  resources :hoges #認証をかけたいリソース
end

2.Controllerの修正
認証をかけるリソースのControllerの先頭に以下を追加

class Posts < Application

  before :ensure_authenticated #←を追加する

これだけ!
ね?簡単でしょう?

認証の確認

さっき認証をかけたリソースにアクセスすると以下のようなページが表示されれば成功

ちなみにこの画面はどうやらgemにあるmerb-auth-slice-passwordというslice読み込んで出しているみたい。
もし、画面を変更したいならapp/views/exceptions/unauthenticated.html.erbというファイルを新たに作成すればそれが認証時に呼ばれます。

あとは設定次第でOpenidが使えたりするらしいけど今日は眠いのでまた今度調べる。