- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
编辑:我自己解决了这个问题。如果有人有更好或更优雅的解决方案,请在此处发布,我将选择作为答案。
I',使用 jQuery Mobile 和 mobile_fu 为 rails3 应用程序设置移动 View 。
Devise 用于身份验证,它在桌面 View 中完美运行。
我的问题是,在移动 View 中成功登录后,应用程序在应该重定向到根页面时再次重定向到 sign_in 表单。登录是正确的,如果我只是重新加载页面,那么重定向到 root 是正确的。顺序如下:
我在移动设备中输入根页面 URL
由于用户未通过身份验证,因此设计重定向到登录页面
我输入凭据并点击登录按钮
登录正确执行,但应用程序再次重定向到登录页面
在移动设备中点击重新加载,然后应用程序重定向到用户正确身份验证的根页面
我已按照此说明使用移动 fu 设置设计,但使用“移动”格式而不是“iOS”格式:
https://github.com/plataformatec/devise/wiki/How-To%3a-Make-Devise-work-with-other-formats-like-mobile,-iphone-and-ipad-%28Rails-specific%29
任何帮助将不胜感激,我已经在这个问题上工作了几天,它开始让我发疯:S
提前致谢!
我在登录时附上了移动和桌面请求和响应的请求和响应数据:
Desktop login
Request
POST /users/sign_in HTTP/1.1 Host: localhost:3000 User-Agent:
Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:7.0.1) Gecko/20100101
Firefox/7.0.1 Accept:
text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8
Accept-Language: es-es,es;q=0.8,en-us;q=0.5,en;q=0.3 Accept-Encoding:
gzip, deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Connection: keep-alive Referer: http://localhost:3000/users/sign_in
Cookie: _PMG_session=BAh7CkkiCmZsYXNoBjoGRUZJQzolQWN0aW9uRGlzcGF0Y2g6OkZsYXNoOjpGbGFzaEhhc2h7BjoKYWxlcnRJIkJOZWNlc2l0YXMgaW5pY2lhciBzZXNpw7NuIGNvbiB0dSBjdWVudGEgcGFyYSBwb2RlciBjb250aW51YXIuBjsAVAY6CkB1c2VkbzoIU2V0BjoKQGhhc2h7BjsHVEkiD3Nlc3Npb25faWQGOwBGIiViZjlkZDc4NzczMmFmMGViNjcyOWRkNzAxNWJhMzQ5YkkiEG1vYmlsZV92aWV3BjsARkZJIhN1c2VyX3JldHVybl90bwY7AEZJIgYvBjsARkkiEF9jc3JmX3Rva2VuBjsARkkiMWEyZW9oamFKT2tsWEZrbzZxc3lNenRhWTVEUk5XaHVUdm9iV3J3aFhFK1E9BjsARg%3D%3D--6623519d539757216a03d212a4e20647e8a5029c; jstree_open=%231%2C%234%2C%235; jstree_load=
Response
HTTP/1.1 302 Found Location: http://localhost:3000/ Content-Type:
text/html; charset=utf-8 Cache-Control: no-cache X-UA-Compatible:
IE=Edge X-Runtime: 1.650766 Server: WEBrick/1.3.1
(Ruby/1.9.2/2011-02-18) Date: Mon, 31 Oct 2011 08:58:24 GMT
Content-Length: 88 Connection: Keep-Alive Set-Cookie: _PMG_session=BAh7CkkiCmZsYXNoBjoGRUZJQzolQWN0aW9uRGlzcGF0Y2g6OkZsYXNoOjpGbGFzaEhhc2h7BjoLbm90aWNlSSIoSGFzIGluaWNpYWRvIHNlc2nDs24gY29ycmVjdGFtZW50ZS4GOwBUBjoKQHVzZWRvOghTZXQGOgpAaGFzaHsASSIQbW9iaWxlX3ZpZXcGOwBGRkkiEF9jc3JmX3Rva2VuBjsARkkiMWEyZW9oamFKT2tsWEZrbzZxc3lNenRhWTVEUk5XaHVUdm9iV3J3aFhFK1E9BjsARkkiGXdhcmRlbi51c2VyLnVzZXIua2V5BjsAVFsISSIJVXNlcgY7AEZbBmkGSSIiJDJhJDEwJEZQL20vZ29KU2FGUFZ0bmRzb0VZeS4GOwBUSSIPc2Vzc2lvbl9pZAY7AEYiJTA1NzI5YjFjOTMyZDdlMjk3YjEwYWQ5NWU3ZDJkZjYx--889ba65c483c3757b6aa47ffc2e187ac27a04dbe; path=/; HttpOnly
Mobile login
Request
POST /users/sign_in HTTP/1.1
Host: localhost:3000
User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_0 like Mac OS X; en-us) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7A341 Safari/528.16
Accept: text/html, /; q=0.01
Accept-Language: es-es,es;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With: XMLHttpRequest
Referer: http://localhost:3000/users/sign_in.mobile
Content-Length: 195
Cookie: jstree_open=%231%2C%234%2C%235; jstree_load=; _PMG_session=BAh7CkkiCmZsYXNoBjoGRUZJQzolQWN0aW9uRGlzcGF0Y2g6OkZsYXNoOjpGbGFzaEhhc2h7BjoKYWxlcnRJIkJOZWNlc2l0YXMgaW5pY2lhciBzZXNpw7NuIGNvbiB0dSBjdWVudGEgcGFyYSBwb2RlciBjb250aW51YXIuBjsAVAY6CkB1c2VkbzoIU2V0BjoKQGhhc2h7BjsHVEkiD3Nlc3Npb25faWQGOwBGIiUwMjY0ZGFkODY2MGY3YmE5ZWY4NmQzYmRmODUyNDUxOEkiEG1vYmlsZV92aWV3BjsARlRJIhN1c2VyX3JldHVybl90bwY7AEZJIgYvBjsARkkiEF9jc3JmX3Rva2VuBjsARkkiMTN5am1kaUhZcWpEZTAyclNNZ05ZNU5aZjA4bG5mamxCZHR6UmlVVHpkNFk9BjsARg%3D%3D--a6c9dbd6b27ac1b43193b4cba901b8862046dacf Pragma: no-cache Cache-Control: no-cache
Response
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Etag: "22b69d3da00b31c705b66d95aa8a32de"
Cache-Control: max-age=0, private, must-revalidate
X-UA-Compatible: IE=Edge
X-Runtime: 1.317610
Server: WEBrick/1.3.1 (Ruby/1.9.2/2011-02-18)
Date: Mon, 31 Oct 2011 09:06:47 GMT
Content-Length: 2915
Connection: Keep-Alive
Set-Cookie: _PMG_session=BAh7C0kiCmZsYXNoBjoGRUZJQzolQWN0aW9uRGlzcGF0Y2g6OkZsYXNoOjpGbGFzaEhhc2h7BjoLbm90aWNlSSIoSGFzIGluaWNpYWRvIHNlc2nDs24gY29ycmVjdGFtZW50ZS4GOwBUBjoKQHVzZWRvOghTZXQGOgpAaGFzaHsASSIQbW9iaWxlX3ZpZXcGOwBGVEkiEF9jc3JmX3Rva2VuBjsARkkiMTN5am1kaUhZcWpEZTAyclNNZ05ZNU5aZjA4bG5mamxCZHR6UmlVVHpkNFk9BjsARkkiCWxpbmUGOwBGSSIGNQY7AFRJIhl3YXJkZW4udXNlci51c2VyLmtleQY7AFRbCEkiCVVzZXIGOwBGWwZpBkkiIiQyYSQxMCRGUC9tL2dvSlNhRlBWdG5kc29FWXkuBjsAVEkiD3Nlc3Npb25faWQGOwBGIiVhYWNkYzNlNjNhODU2ZWVjNmY1YmYzODEwNTk3NDA5Zg%3D%3D--31e22835ee0e428f80e0cf3f3ce5bd9fc8134d20; path=/; HttpOnly
最佳答案
我已经设法解决了这个问题。也许我之前应该问过让灵感跑起来:)
显然,当请求格式不是 HTML 时,Devise 无法正确重定向。不幸的是,我依靠格式为使用 mobile_fu 和 forcing the request format as devise wiki suggested 的移动设备提供不同的模板。为了让它在 jquery mobile 上正常运行。
我发现的解决方案是一个丑陋的解决方案:
当用户向设计 Controller 发出 POST 请求时 - 尝试进行身份验证时 - 我强制使用 html 格式而不是移动格式。这样,Devise 就能够正确地进行重定向。
ApplicationController 类的代码:
before_filter :set_mobile_format
def set_request_format
if is_mobile_device? # this method is provided by mobile_fu
if (devise_controller? && action_name == 'create' && request.method == ('POST'))
request.format = :html
else
request.format = :mobile
end
end
end
关于ruby-on-rails-3 - 使用 devise 登录且 mobile_fu 无法正确重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7951702/
我的 Controller 呈现常规 html、mobile_fu 和 javascript,如下所示: respond_to do |format| format.html { rend
我正在尝试将我的应用程序从 Rails 3.2.13 切换到 Rails 4。这样做时,我遇到了一个主要障碍——我使用 gem mobile_fu 来确定用户是否来自移动设备。该 gem 需要 rai
编辑:我自己解决了这个问题。如果有人有更好或更优雅的解决方案,请在此处发布,我将选择作为答案。 I',使用 jQuery Mobile 和 mobile_fu 为 rails3 应用程序设置移动 Vi
我是一名优秀的程序员,十分优秀!