如何仅由单个管理员访问整个站点

时间:2014-09-23 09:04:53

标签: ruby-on-rails ruby ruby-on-rails-4

如何在Ruby on Rails中实现以下行为?

我需要仅由单个管理员访问整个站点,因此我需要在每个未登录的用户操作中显示授权页面。

最好的方法是什么?也许cancancan或像这样?你能举个例子吗?

我正在使用Ruby on Rails 4.1.4 btw。

提前致谢。

3 个答案:

答案 0 :(得分:2)

您可以使用Devise进行设置。由于您需要单个用户系统,因此您不需要cancancan来授权资源。

基本上,您通过添加需要使用身份验证的过滤器来锁定应用程序:

before_action :authenticate_user!

有关如何设置注册以仅接受Devise wiki上的一个用户的指南。 https://github.com/plataformatec/devise/wiki/How-To:-Set-up-devise-as-a-single-user-system

答案 1 :(得分:1)

如果您只有一个用户可以访问您的网站,那么您也可以使用devise gem。只需使用设计创建简单的用户。并在您的applications_controller.rb上使用before_filter :authenticate_user!。因此,在到达控制器之前,将检查每个请求。

答案 2 :(得分:1)

我是 ActiveAdmin 的忠实粉丝。您可以通过Active Admin管理整个网站的内容和用户,即使它提供searchfilter& sorting设施。如您所述,whole site accessible by the single admin only, 未在用户操作中签名

供您参考:

如果您希望授权用户登录,那么当papirtiger回答您时,您只需使用before_action :authenticate_user!方法


更新

正如您所提到的,所有用户都可以访问该页面,在这种情况下,我建议您使用 cancancan 进行Rails 4.您可以简单地分配角色并按照您可以授予角色使用操作的权限。提供角色管理系统

在您的Users表中,将roles的一列添加为布尔类型,并将admin用户分配给false,默认情况下将所有用户分配到true。这是实现目标的最简单方法。 在您的控制器集中如果用户的角色false,那么他可以访问所有内容..

对于例如 Add an Admin Role