如何配置Devise以便只有一个用户可以访问CRUD?

时间:2017-07-13 15:50:31

标签: ruby-on-rails ruby devise

我正在尝试构建一个简单的博客,所有的rails教程(我已经查看了大约15个教程)展示了如何使用Devise并允许许多用户登录他们的帐户并创建,更新并删除帖子。

我想将Devise用于学习目的,我希望只有一个用户,这将是我,可以访问允许创建,编辑和销毁帖子的链接和网址。

我发现下面链接的网页来自制作Devise的人,我认为这是我问题的解决方案,但我不确定。

https://github.com/plataformatec/devise/wiki/How-To:-Set-up-devise-as-a-single-user-system

如何使用Devise实现这一目标?

1 个答案:

答案 0 :(得分:1)

您可以在应用程序控制器上执行此操作:

before_action :authenticate_user!

因此,您的所有crud控制器都将从应用程序控制器继承它,并要求用户在执行任何操作之前登录。此外,由于您将只有一个用户,因此不要认为您需要用户管理页面,或类似的东西。您可以在rails控制台上手动创建该用户。

此外,设计会在您的用户模型上设置一个设置,您可以在其中插入您允许登录/注册的行为。类似的东西:

  devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable

(请参阅https://github.com/plataformatec/devise上的所有可能配置)。

因此,在您的情况下,您可以删除:registerable,例如,因此设计将不允许访问用户注册您的系统(这样,只有在控制台上手动创建的用户才能登录)

此外,这些配置直接反映在设计视图上(因此,一旦删除了可注册选项,它就不会有“注册”链接)。但您也可以覆盖视图并按照您的意愿执行操作。要生成这些视图,只需运行:

rails generate devise:views

Devise是一个非常好的身份验证宝石,可能拥有您想要的一切。仔细看看文档。

希望这有帮助!