Я бьюсь головой об этом уже пару дней:
У меня есть приложение RoR, использующее AuthenticatedSystem и требующее аутентификацию для некоторых ресурсов. Before_filter проверяет, вошел ли пользователь в систему. Если нет, он захватывает request.request_uri и помещает его в переменную сеанса (session [: return_to]), а затем отправляет пользователя на страницу входа через сообщение перенаправления 302. Затем после входа в систему пользователь перенаправляется обратно на URL в сеансе [: return_to].
Это прекрасно работает в IE и Firefox. В Safari request.request_uri для начального before_filter пуст, и контроллер сеанса всегда перенаправляет на главную страницу.
Кто-нибудь сталкивался с этим раньше? Единственная подсказка, которую я имею, - то, что Веб-инспектор для Safari даже не показывает запрос на начальную страницу, только запрос на вход в систему. В Firefox я вижу оба запроса.
Вот фильтр before_:
def login_required
if !authorized?
session[:return_to] = request.request_uri
redirect_to new_session_path
end
end
Вот сеанс / создание:
def create
self.current_user = User.authenticate(params[:login], params[:password])
if logged_in?
if params[:remember_me] == "1"
current_user.remember_me unless current_user.remember_token?
cookies[:auth_token] = { :value => self.current_user.remember_token , :expires => self.current_user.remember_token_expires_at }
end
redirect_back_or_default('/')
flash[:notice] = "Logged in successfully"
else
flash.now[:error] = "Authentication failed."
render :action => 'new'
end
end
Есть идеи?