gpt4 book ai didi

ruby-on-rails - 使用用户或管理员模型和 Basecamp 样式子域设计登录

转载 作者:数据小太阳 更新时间:2023-10-29 07:08:50 25 4
gpt4 key购买 nike

我为 Devise 用户和管理员提供了不同的模型。我也在使用 Basecamp 风格的子域。除了我需要能够以用户或管理员身份进行身份验证的一些 Controller 和操作外,一切都运行良好。

目前我有 authenticate_user!在我的 application_controller.rb 中设置,对于那些只有管理员才能访问的 Controller 和操作,我使用 skip_before_filter 跳过它。

不幸的是,我不能简单地指定每个 Controller 的身份验证要求,因为我仍然需要一些 Controller 和操作才能被用户或管理员访问。

我尝试了一些方法都无济于事。看来,如果我移动 authenticate_user !和 authenticate_admin!进入某种它无法处理的子域检测逻辑。基本上:

current_subdomain = request.subdomains.first    
if current_subdomain == 'admin'
authenticate_admin!
else
authenticate_user!
end

我曾一度能够让它尝试进行身份验证,但由于某种原因,它无法排除 session Controller 需要身份验证的情况,这导致了重定向循环(我第一次使用 Ruby!)。

我意识到我可以向我的用户添加一个字段来表示管理员状态,但应用程序需要用户和管理员之间的权力分离比允许的更大,除了一些 Controller 和操作。

  • ruby 1.9.2
  • rails 3.0.3
  • 设计 1.1.3

最佳答案

尝试按照

的方式编写自己的 before filter
#application_controller.rb
def authenticate_any!
if admin_signed_in?
true
else
authenticate_user!
end
end

然后在您希望管理员和用户都能够通过身份验证访问的 Controller 中使用

#myobject_controller.rb
before_filter :authenticate_any!

如果您以管理员身份登录,那么您将通过 before_filter,否则您将通过 authenticate_user!这是默认行为。

关于ruby-on-rails - 使用用户或管理员模型和 Basecamp 样式子域设计登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4612545/

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