我目前在我的 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
所以现在我的 login_requred 函数需要修改,以便“permit_login_via_get”方法可以使用它。