Я отменяю ответный запрос Devise, чтобы установить код состояния 401. Однако, когда пользователь не может войти в систему, они перенаправляются на страницу с ссылкой "вы перенаправлены". Если я удалю этот :status => 401
из перенаправления, он отлично работает.
class CustomFailure < Devise::FailureApp
def redirect_url
new_user_session_url(:subdomain => 'secure')
end
def respond
if http_auth?
http_auth
else
store_location!
flash[:alert] = i18n_message unless flash[:notice]
redirect_to redirect_url, :status => 401
end
end
end
изменить
В качестве альтернативы я хотел бы отобразить флеш-сообщение и остаться на одной странице, но добавив эту строку кода:
render :text => "unauthorized", :status => 401
заставляет ruby жаловаться:
undefined method `render' for #<CustomFailure:0x00000103367f28>
Что здесь происходит?