ruby-on-rails 设计验证用户

eeq64g8w  于 2023-03-09  发布在  Ruby
关注(0)|答案(1)|浏览(120)

请回答我问题:
我有2个模型(管理员和用户)-〉使用device创建,并且我有post_controller:
问题就来了
如果我有一个模型(user.rb)-〉在我的控制器中,我把它:

before_filter :authenticate_user!, :except => [:show, :index]

但我有2个模型,我想用户可以访问后控制器的“显示”和“索引”操作,管理员可以访问所有操作。
我会做这样的事情:

before_filter :logged_in
.
.
.
    private
        def logged_in
          if admin_signed_in?

          else 
            authenticate_user!
          end   
        end

但我想改变我的字符串:
authenticate_user!
变成了这样
:authenticate_user!, :except => [:show, :index]
但引用before_filter除外
我怎么能做到这一点(没有'cancan'宝石)

zwghvu4y

zwghvu4y1#

尝试使用两个before过滤器-一个用于仅管理员操作,另一个用于管理员或用户操作。

# ensure admin for other actions
before_filter :check_admin_logged_in!, :except => [:show, :index]

# ensure user or admin logged in for these actions (:only option is optional)
before_filter :check_user_logged_in!, :only => [:show, :index]

private
  def check_admin_logged_in! # admin must be logged in
    authenticate_admin!
  end
  def check_user_logged_in! # if admin is not logged in, user must be logged in
    if !admin_signed_in?
      authenticate_user!
    end   
  end

相关问题