【发布时间】:2016-01-28 08:53:19
【问题描述】:
以下是我的带有 before_action 的控制器
class Admin::ApplicationController < ApplicationController
before_action :authenticate_admin!
#
# ....
#
end
class Admin::DashboardController < Admin::ApplicationController
def show
end
end
routes.rb:
namespace :admin do
root :to => "dashboard#show" # to match the route /admin
end
我正在使用设备进行身份验证。与乘客 5.0.23 一起使用时的问题是,当我第一次从浏览器访问 /admin 而不登录时,我被重定向到 /admins/sign_in,这是完美的。如果我再次尝试访问 /admin 而不登录,它会将我带到仪表板。所以 before_action 被忽略了。现在,如果我修改上述任何控制器或重新启动乘客,则 before_action 再次适用于对 /admin 的即时请求,但不适用于后续请求。
我尝试使用乘客 5.0.15,它与 Rails 4.1.5 的另一个应用程序一起工作正常,但它没有解决问题。我无法尝试将 rails 降级到 4.1.5,因为它引发了许多其他错误。
当我使用 webrick 运行上述相同的应用程序时,before_action 每次都可以正常工作。
有没有人遇到上述问题?任何想法可能是上述问题的原因以及解决问题的任何建议?提前致谢。
编辑: 当与 webrick 一起使用时,这个问题似乎也存在。我有两种身份验证。一个用于用户,另一个用于管理员。使用 webrick,问题在两种身份验证之间切换。如果 before_action 适用于 authenticate_user!,则它不适用于 authenticate_admin!反之亦然。与乘客一样,它既不适用。这似乎只发生在开发模式中。
【问题讨论】:
标签: ruby-on-rails devise passenger