【问题标题】:Multiple model authentication in Rails using devise使用设计在 Rails 中进行多模型身份验证
【发布时间】:2014-12-16 17:49:54
【问题描述】:

我有一个用户模型和一个管理员模型,并且我正在使用设计进行身份验证。我的管理员使用电子邮件和密码登录。我的用户可以使用电子邮件和用户名登录。我应该怎么办

#config/initializers/devise.rb
config.authentication_keys = [ : ]

line 应该是,我是否需要重写设计来实现这一点?

【问题讨论】:

标签: ruby-on-rails ruby ruby-on-rails-3 authentication devise


【解决方案1】:

电子邮件是用户的必填字段吗?如果是这样,您可以覆盖设计会话控制器,如果使用用户名,则定位用户的电子邮件并处理身份验证。

我也强烈建议不要使用单独的用户和管理员模型,除非管理员继承用户。您只是在询问用户管理方面的问题。我建议在 User 模型上设置一个角色[s] 属性,并使用像 Pundit 这样的框架来管理访问策略。

【讨论】:

  • 谢谢。但是为什么不建议使用不同的模型呢?
  • 除了您将拥有 2 个几乎相同的数据库表之外,如果您有一个想要成为管理员的现有用户,或者您想要降级为用户的管理员怎么办?此外,如果您对 Devise 进行任何高级别的更改,您将不得不在多个地方依赖这些更改。
  • 如果 User 和 Admin 之间没有任何关联怎么办?而且我计划为用户提供许多管理员不需要的属性。有不同的表不是很简单吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-06-01
  • 1970-01-01
  • 2021-02-08
  • 2012-02-09
  • 1970-01-01
  • 2015-10-03
  • 1970-01-01
相关资源
最近更新 更多