如何在Ruby on Rails中实现以下行为?
我需要仅由单个管理员访问整个站点,因此我需要在每个未登录的用户操作中显示授权页面。
最好的方法是什么?也许cancancan
或像这样?你能举个例子吗?
我正在使用Ruby on Rails 4.1.4 btw。
提前致谢。
答案 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管理整个网站的内容和用户,即使它提供search
,filter
& 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