设计:仅允许管理员登录

时间:2017-11-10 12:13:16

标签: ruby-on-rails devise

我使用设计进行身份验证。它工作正常。

我有两个不同的角色1)管理员和2)普通用户。

我在users表中添加了admin boolean字段。对于管理员用户,我将admin字段设置为true。

现在我必须只允许管理员用户登录。有没有办法实现这一点。

我正在使用rails 5.

2 个答案:

答案 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

相关问题