2

Railsアプリの承認を実装しようとしています。Cancanを使用できることはわかっていますが、私の場合、私が持っているすべての役割はユーザーと管理者です。人々は常にモデルを役割で保護していることがわかります(cancanのように)。

私の承認の考え方は、次のように追加することです。

 before_filter :redirect_if_not_admin :only => :create, ...

その後:

def redirect_if_not_admin

       if !@user.is_admin?
            redirect_to :root  
end

すべてのコントローラーと、アクセスを制限したいアクションで。

Q1。これは、モデルの属性へのアクセスを制限するよりも安全性が低いのでしょうか。

Q2。誰かがbefore_filterとリダイレクトをバイパスして私のコントローラーコードにアクセスする方法はありますか?

前もって感謝します

4

1 に答える 1

1

確かに -before_filterとリダイレクト ハンドラ メソッドを に追加するだけapplication_controller.rbです。ユーザー モデルにメソッド「is_admin?」がある限り、これはうまくいきます。

これは、他の方法と同じくらい安全です (実際、このようなほとんどの場合に使用される方法です) before フィルターをバイパスする唯一の方法は、コードで許可されている場合です。実際、特定のコントローラー メソッドを許可したい場合が時々あります。その場合、または条件application_controller.rbを使用して特定のコントローラーのフィルターをオーバーライドできます。:except:only

于 2012-11-19T01:53:08.277 に答える