Отказ от ответственности : Я довольно новичок в RoR, так что это мое лучшее предположение и может быть полностью не в порядке ...
Я заметил, что в ваших app/views/dashboard
у вас есть index.html.erb
и index.mobile.erb
, поэтому я предполагаю, что вы используете суффикс .mobile для получения мобильных страниц, специфичных для вашего iPhone ... В ваших lib/authenticated_system.rb
, Ваш метод отказа в доступе:
def access_denied
respond_to do |format|
format.html do
store_location
redirect_to new_session_path
end
# format.any doesn't work in rails version < http://dev.rubyonrails.org/changeset/8987
# you may want to change format.any to e.g. format.any(:js, :xml)
format.any do
request_http_basic_authentication 'Web Password'
end
end
end
Этот метод вызывается всякий раз, когда неавторизованный пользователь пытается получить доступ к контенту (см. Ваш метод authorized
, чтобы узнать, что квалифицирует пользователя как авторизованного). Этот метод отвечает на запросы в зависимости от запрошенного формата. То есть любые запросы .html
попадают в блок format.html do
. Поскольку блока format.mobile
нет, все запросы .mobile попадают в блок format.any
. Это приводит к поведению, которое вы объяснили в своем вопросе:
Разница в том, что на рабочем столе
версия я ввожу данные для входа
прямо в форму входа, которую я сделал,
но на iPhone версии JQtouch
всплывающее окно с пользовательского интерфейса iPhone запрашивает
информация для входа.
Другое различие между ними состоит в том, что format.html
создает сеанс, а format.any
запрашивает только учетные данные и не создает сеанс.
Рассматривали ли вы добавление блока format.mobile
, чтобы указать, как система аутентификации должна обрабатывать запросы .mobile для создания сеанса (аналогично блоку format.html
)? Можно даже попробовать использовать тот же метод request_http_basic_authentication (чтобы пользовательский интерфейс iPhone запрашивал учетные данные), но затем сделать что-то с предоставленными учетными данными, чтобы создать сеанс или файл cookie.
Опять же, я могу быть совершенно не в себе, но, надеюсь, мой ответ приносит больше пользы, чем вреда!