我使用设计进行身份验证。它工作正常。
我有两个不同的角色1)管理员和2)普通用户。
我在users表中添加了admin boolean字段。对于管理员用户,我将admin字段设置为true。
现在我必须只允许管理员用户登录。有没有办法实现这一点。
我正在使用rails 5.
答案 0 :(得分:1)
最有效的解决方案是定义新的warden策略(在session_controller中制作一些硬代码并不是那么容易,但它是一个非常正确的方法来确定良好且易于管理的代码)。
https://insights.kyan.com/devise-authentication-strategies-a1a6b4e2b891
因此,您需要添加将验证的策略,该用户是管理员。
答案 1 :(得分:0)
最简单的方法是使用devise_custom_authenticatable gem
@media
打开启用Devise的模型(app / model / user.rb)并添加:custom_authenticatable方法。
gem install devise_custom_authenticatable
然后定义检查用户角色
devise :custom_authenticatable, :database_authenticatable, :registerable,
:recoverable, :rememberable, :validatable
以上方法将返回true或false。现在,您可以使用普通用户和admin来检查登录过程。
有关身份验证的更多信息,请点击以下链接:
创建角色:https://github.com/RolifyCommunity/rolify
Devise自定义身份验证:https://github.com/AMekss/devise_custom_authenticatable