Basic認証を使ってみた。
2.0の新機能は色々あるみたいだけど、なんとなく目を引いた&簡単そうだったので、
Basic認証を使ってみた。
class TestController < ApplicationController before_filter :authenticate def index end private def authenticate authenticate_or_request_with_http_basic do |user_name, password| user_name == 'TEST' && password == 'PASS' end end end
あと、app/views/test/index.rhtmlに、適当にtestとか記述して*1
試してみる。
DB作ってなかったのでちょっとエラーでたけど、
適当にtest2_developmentとかDB作ってテスト。
ベーシック認証できたよー。
2点ほど気になった
- エラーメッセージしょぼいお
- ずっとBASIC認証のターン!
とりあえずエラーメッセージがしょぼいのでソースコード見てみる。
vendor/rails/actionpack/lib/action_controller/http_authentication.rb
でやってるぽい。
と思ったらエラーメッセージ固定値ぽいー。
124行目で返してる。
BASIC認証だし、固定の内容で良いのかなあ・・・
というわけでソースコードちょっと変えてみた。
class TestController < ApplicationController before_filter :authenticate def index end private def authenticate authenticate_or_request_with_http_basic do |user_name, password| if user_name == 'TEST' && password == 'PASS' @login = "成功したよ!!" else @login = "失敗したよ!!" end end end end
これで1回だけ認証する形&エラー表示できる様に
まぁ、フィルターの書き方とauthentication_request書き換えてあげれば
結構実現できそうって事で。
*1:render :textの方が良い気もする