1

作成中のアプリに認証を追加しようとしていますが、質問があります。:admin 列を User テーブルに追加し、ブール値として設定しました。コントローラーに次のコードを追加しました。

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 を使用してアクションを承認することを検討してください。

単純なアプリケーションの場合、サード パーティの認証ジェムを使用するのはやり過ぎに思えるかもしれませんが、認証ルールを 1 つの場所ability.rb( CanCan の場合はファイル) に移動することは非常に良いことです。

その認証システムで CanCan を使用できます。CanCan はcurrent_user、コントローラーにメソッドが存在することを期待するだけです。

于 2012-04-22T17:58:47.160 に答える