before_filter :restrict_access
def restrict_access
authenticate_or_request_with_http_token do |token, options|
true
end
end
Здесь вы можете увидеть, что я возвращаюсь всегда верно для authenticate_or_request_with_http_token
, так же, как попытка заставить его работать. Однако я столкнулся с чрезвычайно странной проблемой.authenticate_or_request_with_http_token всегда возвращаются ложь с AFNetworking
Я посылаю в Authorization
заголовка со значением Token token=token value here
клиент здесь является приложение IOS с помощью AFNetworking.
Когда приложение iOS вызывает это на localhost: 3000, оно работает так, как ожидалось, и я не получаю ошибку 401.
С точно таким же кодом однако, когда я запускаю это на удаленном сервере (Heroku), я получаю 401.
Однако 401 происходит только на удаленном сервере, когда клиент является приложением IOS. Когда вы запускаете это через Paw или Postman, он работает отлично. Это ошеломляет.
Вот код IOS, который устанавливает заголовок авторизации: [self.operationManager.requestSerializer setValue:[NSString stringWithFormat:@"Token token=%@", accessToken] forHTTPHeaderField:@"Authorization"];
Почему работает запрос от IOS Simulator -> LOCALHOST работы просто отлично, но работает один и тот же запрос от IOS Simulator -> Heroku не работает и привести к 401?
И помните, что authenticate_or_request_with_http_token
всегда возвращает true. Поэтому мне кажется, что Heroku может изменять формат заголовка авторизации, чтобы он стал недопустимым, и этот блок никогда не вызывается. authenticate_or_request_with_http_token
, кажется, возвращает false по умолчанию, если формат заголовка авторизации прикручен, например, если я перехожу в token=432
, а не в Token token=432
.
У меня такая же проблема. Какое решение ? – Magnum