1

我正在为我正在构建的应用程序添加授权,我有一个问题。我在我的用户表中添加了一个 :admin 列并将其设置为布尔值。在我的控制器中,我添加了以下代码:

class ShipsController < ApplicationController

  def index
    ships = Ship.all
    @ships = ships.sort_by { |v| [v[:empire_image], v[:cost]] }
    if current_user.admin == true
      respond_to do |format|
        format.html # index.html.erb
        format.json { render json: @ships }
      end
    else
      respond_to do |format|
        format.html { redirect_to root_path }
      end
    end
  end

看来我必须将其添加到我的所有操作中,这似乎是错误的。我的问题是,这样做是不安全的还是只是为自己做更多的工作,但很好。

另外我正在使用 railstutorial.org 的身份验证,我想知道像 cancan 这样的库是否可以很好地使用它。

谢谢你的时间,尼克

4

1 回答 1

1

这种方式不是不安全的,它只是让你的控制器混乱,至少考虑使用 before_filter 来授权你的操作。

也许对于一个简单的应用程序,使用 3rd 方授权 gem 可能看起来有点过头了,但是将授权规则移动到一个地方是一件非常好的事情(ability.rbCanCan 的情况下的文件)。

您可以将 CanCan 与该身份验证系统一起使用,CanCan 只希望current_user控制器中存在一个方法。

于 2012-04-22T17:58:47.160 回答