Rails の BASIC 認証

Rails 2.0 に BASIC 認証モジュールが載るのが悔しい罠(笑).
以下のようなコードをコントローラに記述する. 見れば分かると思うけど、DB の users テーブルの password のカラムに sha1 で変換したパスワードが入っていることが前提. 念の為.

private
def authorize()
  user = nil
  if request.env.has_key?('HTTP_AUTHORIZATION')
    type, input = request.env['HTTP_AUTHORIZATION'].to_s.split
    if type == 'Basic'
      login_id, password = Base64.decode64(input).split(':')
      user = User.find(:first, :conditions => ["login_id = ?", login_id])
    end
  end
  if user == nil || Digest::SHA1.hexdigest(password) != user.password
    headers["Status"] = "Unauthorized"
    headers["WWW-Authenticate"] = "Basic realm=restricted"
    render :text => 'Authorization Required', :layout => false, :status =>'401'
  end
end
before_filter :authorize