現在、資格情報の検証に使用される ApplicationController に before_filter があります。また、URL に直接 (つまり、ブラウザーのログイン フォーム/セッションからではなく、スクリプトから) アクセスするときに、ユーザーの資格情報を確認できるようにしたいと考えています。GET 要求を介してユーザー資格情報を受け入れることに問題はありますか?
application_controller.rb
before_filter :login_required
def login_required
reset_session if session[:last_seen] < Rails.configuration.admin_timeout.minutes.ago rescue nil
return true if session[:user]
if (!params[:login].nil? && !params[:password].nil?) && session[:user] = User.authenticate(params[:login], params[:password])
return true
else
render :nothing => true, :status => 401
return false
end
flash[:alert] = 'Please login to continue'
redirect_to login_url and return false
end
それが受け入れられない場合は、特定の「安全な」コントローラー アクションでのみこれを実行できるようにしたいと考えています。たとえば、次のようになります。
product_controller.rb
before_filter :do_something
permit_login_via_get :only => [:index]
def index
# Do some stuff in here. This should be accessible via http://mydomain.com/products?login=admin&password=yeahlikeidtellyouthat
end
したがって、「permit_login_via_get」メソッドが機能するように、login_requred 関数を変更する必要があります。