RamazeさんにおけるBasic認証のやり方
そう言えば「そもそもRamazeさんでBasic認証ってどうやるの?」と思う人もたくさん居るはずです。私もパッチ書くまでは知りませんでした。まぁBasic認証って簡単だからもちろんRamazeさんでやるのだって難しくありません。しかもRamazeさんはBasic認証のサンプル(examples/simple_auth.rb)を標準添付してくれているという親切さっぷりなのでこれを見ることにしましょう。
require 'rubygems' require 'ramaze' class MainController < Ramaze::Controller LOGINS = { :username => 'password', :admin => 'secret' }.map{|k,v| ["#{k}:#{v}"].pack('m').strip} unless defined? LOGINS helper :aspect before_all do response['WWW-Authenticate'] = %(Basic realm="Login Required") respond 'Unauthorized', 401 unless auth = request.env['HTTP_AUTHORIZATION'] and LOGINS.include? auth.split.last end def index 'Secret Info' end end Ramaze.start :adapter => :mongrel
というわけで、ほとんど解説が不要なくらい簡単ですね。"helper :aspect"というのは、before_all ブロックを書くために必要な aspect ヘルパーを呼び出すものです。before_all はリクエストを処理する前に行なう準備体操のようなものですから、ここの中で認証行なえば index とかのリクエスト処理部には認証に成功した場合の処理だけを記述して良いわけです。
ユーザ名とパスワードの設定はここでは LOGINS で行なっていますが、実用的なアプリケーションではこれをもう少しまっとうなものに変えてあげましょう。以上で終わりです、やっぱりRamazeさんは簡単親切ですね!