我正在使用 Devise 1.3.4 对我的应用程序中的后端进行身份验证。
我已经连续几天无法登录了。
发生的情况是:
- 我进入登录页面 /admin/sign_in
- 使用良好的凭据登录
- 在日志中看到登录成功(last_sign_in_at、current_sign_in_at 和 current_sign_in_ip 已设置,sign_in_count 增加)
- 设计会话控制器尝试将我转发到我在应用程序控制器中指定的 after_sign_in_path_for (Admin::DashboardsController#show)
- 然后突然再次呈现登录页面。没有重定向,什么也没有。
我检查了before_filters,它肯定是Devise的autorize_admin_user!导致问题的过滤器(调用之前的过滤器,不调用之后的过滤器)。这意味着即使登录成功后它也不会识别我已登录。
我意识到,如果没有看到我的大部分代码,就很难想出解决方案。
所以我的第一个问题是:
我该如何调试这个错误?
我怎样才能准确地追踪到登录不起作用的地方?我必须深入了解典狱长吗?
这可能是会话/cookie 问题吗?我该如何调试呢?
所有想法表示赞赏!
日志是这样写的:
Started GET "/admin/sign_in" for 127.0.0.1 at 2011-05-20 13:49:11 +0200
[Barista] Compiling all scripts for barista
[Barista] Compiling all coffeescripts
Processing by Admin::SessionsController#new as HTML
Rendered admin/shared/_header.html.haml (3.1ms)
Rendered admin/shared/_menu.html.haml (1.7ms)
Rendered admin/sessions/new.html.haml within layouts/admin (128.7ms)
Completed 200 OK in 171ms (Views: 133.0ms | ActiveRecord: 0.0ms)
Started POST "/admin/sign_in" for 127.0.0.1 at 2011-05-20 13:49:15 +0200
[Barista] Compiling all scripts for barista
[Barista] Compiling all coffeescripts
Processing by Admin::SessionsController#create as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"VLjjo6W+sd7yRH3SRSNpUN3L8a+OaOgCUpJgB5VaGEM=", "admin_user"=>{"email"=>"[email protected] /cdn-cgi/l/email-protection", "password"=>"[FILTERED]", "remember_me"=>"0"}, "commit"=>"Sign in"}
AdminUser Load (0.7ms) SELECT `admin_users`.* FROM `admin_users` WHERE `admin_users`.`email` = '[email protected] /cdn-cgi/l/email-protection' LIMIT 1
SQL (0.2ms) BEGIN
AREL (0.3ms) UPDATE `admin_users` SET `last_sign_in_at` = '2011-05-20 11:49:15', `current_sign_in_at` = '2011-05-20 11:49:15', `current_sign_in_ip` = '127.0.0.1', `sign_in_count` = 3, `updated_at` = '2011-05-20 11:49:15' WHERE `admin_users`.`id` = 33
SQL (0.5ms) COMMIT
Redirected to http://myapp.dev/admin
Completed 302 Found in 160ms
Started GET "/admin" for 127.0.0.1 at 2011-05-20 13:49:15 +0200
[Barista] Compiling all scripts for barista
[Barista] Compiling all coffeescripts
Processing by Admin::DashboardsController#show as HTML
Completed in 26ms
Started GET "/admin/sign_in" for 127.0.0.1 at 2011-05-20 13:49:16 +0200
[Barista] Compiling all scripts for barista
[Barista] Compiling all coffeescripts
Processing by Admin::SessionsController#new as HTML
Rendered admin/shared/_header.html.haml (3.5ms)
Rendered admin/shared/_menu.html.haml (2.0ms)
Rendered admin/sessions/new.html.haml within layouts/admin (134.9ms)
Completed 200 OK in 182ms (Views: 139.2ms | ActiveRecord: 0.0ms)
我最近也遇到了类似的问题,那是因为我玩了会话cookie。我已经使用了域并将其设置为 :domain => :all 在“initializers/session_store.rb”中。由于此登录在开发环境中停止工作。
如果您对 session_store.rb 进行了任何更改,那么您可能需要恢复这些更改并查看是否再次开始工作。如果是这种情况,那么您可以根据环境定义会话存储:
if Rails.env.production?
Appname::Application.config.session_store :cookie_store, {:key => '_cookie_name', :domain => :all}
else
Appname::Application.config.session_store :cookie_store, :key => '_cookie_name'
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)