gpt4 book ai didi

ruby-on-rails - 带有 JQTouch 登录问题的 iPhone 上的 Rails

转载 作者:可可西里 更新时间:2023-11-01 16:39:40 25 4
gpt4 key购买 nike

我有一个使用 jqtouch 的带有移动 View 的 Rails 应用程序。如果在 iPhone 上查看应用程序,则加载 application.mobile.erb 代替默认的 application.HTML.erb。

一切正常,除了登录。用户可以登录然后查看内容。但是,他们每次加载网站时都必须登录。有没有办法让 iPhone 将凭据存储为 cookie 或类似的东西?

我注意到,如果我在 iPhone 上查看桌面版本并登录,我的登录凭据会被存储,因此我不必每次都登录。一旦我切换到 iPhone 特定的 jqtouch 版本,我每次都必须登录。

不同之处在于,在桌面版本上,我将登录详细信息直接输入到我制作的登录表单中,但在 iPhone jqtouch 版本上,iPhone UI 的弹出窗口要求登录信息。

应用程序使用 Restful 身份验证插件:http://github.com/technoweenie/restful-authentication

谢谢,

丹尼

可以在github上查看应用:

www.github.com/dannyweb/baseapp2

最佳答案

免责声明:我对 RoR 还很陌生,所以这是我最好的猜测,可能完全不对...

我注意到在你的 app/views/dashboard 中你有 index.html.erbindex.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 block 。由于没有 format.mobile block ,所有 .mobile 请求最终都会到达 format.any block 。这会导致您在问题中解释的行为:

The difference is that on the desktop version I enter the login details directly into the login form I made, but on the iPhone jqtouch version a popup from the iPhone UI requests the login information.

两者之间的另一个区别是 format.html 创建一个 session ,而 format.any 只请求凭据而不创建 session 。

您是否考虑过添加 format.mobile block 来指定身份验证系统应如何处理 .mobile 请求以便创建 session (类似于 format.html堵塞)?您甚至可以尝试使用相同的 request_http_basic_authentication 方法(以便 iPhone UI 请求凭据),然后对提交的凭据执行某些操作以创建 session 或 cookie。

再说一次,我可能完全没有根据,但希望我的回答能帮上大忙!

关于ruby-on-rails - 带有 JQTouch 登录问题的 iPhone 上的 Rails,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3383258/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com