Использование этого хэша в URL означает, что у вас нет встроенного сеанса Rails. Суть сеанса заключается в обеспечении некоторого чувства состояния между запросами. Вы уже предоставляете это состояние, видя, что вы передаете этот хеш, поэтому, по моему мнению, вы можете удалить плагин restful_authentication и сделать что-то вроде этого:
class ApplicationController < ActionController::Base
def require_login
if params[:access_key]
@current_user = User.find_by_access_key(params[:access_key]) || restrict_access
else
restrict_access
end
end
def restrict_access
flash[:error] = "You have to log in to access that."
redirect_to root_path
end
end
Затем выполните before_filter :require_login
в контроллерах, где для доступа требуется логин.