【问题标题】:Devise authenticate_user设计authenticate_user
【发布时间】:2012-09-05 09:40:27
【问题描述】:

帮助我解决这个问题:

我有 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]
但 except 指的是 before_filter

我该怎么做(没有'cancan' gem)

【问题讨论】:

    标签: ruby-on-rails devise


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 2013-06-28
      • 1970-01-01
      • 2014-02-06
      • 1970-01-01
      • 2013-05-23
      • 2012-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多