设计的authenticate_user(Devise authenticate_user)

2019-07-31 08:51发布

帮助我在这个问题:

我有2个模型(管理员和用户) - >与色器件创建,并且我有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

我怎么能做到这一点(没有“康康舞”宝石)

Answer 1:

之前,尽量过滤器使用两个 - 一个是管理员只有行动,另一个用于管理员或用户操作。

# 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


文章来源: Devise authenticate_user