admin属性を追加してDeviseに管理者ロールを追加しました。before_filter authenticate_adminを作成しますか?
before_filter :authenticate_admin!
application_controller
protected
unless current_user.try(:admin?)
redirect_to :new_user_session_path
end
admin属性を追加してDeviseに管理者ロールを追加しました。before_filter authenticate_adminを作成しますか?
before_filter :authenticate_admin!
application_controller
protected
unless current_user.try(:admin?)
redirect_to :new_user_session_path
end
:これは署名されるadminユーザーを必要とbefore_filterを作成するための正しい方法であれば
あなたは私に言うことができます
このアプローチで行ってください
before_filter :authenticate_user!
before_filter do
redirect_to new_user_session_path unless current_user && current_user.admin?
end
これにより、すべてのゲストも強制的にサインインされます。それははるかにだ - あなたは私のアプローチは、role属性を作成して、意図したロールのセットに対して、その文字列の値を確認することであるインスタンスメソッドにアクセスするにはちょうどadmin?
def admin?
self.admin == true
end
を認証を強制するデフォルトの方法を変更する必要はありません多くのブール型属性を作成する必要がなくなり、柔軟に対応できます。
上記の(Michael De Silvaによる)答えを見ると、彼が使用したコードに問題がありました。彼はパスを記号(:new_user_session_path
)として書いていましたが、私はそれを通常のパスヘルパー(new_user_session_path
)にする必要がありました。私がこれを変更するまでは、パスが無効であると言ってエラーが発生しました。 (私はRails 5を実行しています)
これは他の人に役立つことを願っています!
ありがとうございます。私はこれを後で試してみます。 –
あなたは歓迎です=) –
admin?を定義する必要はありません。管理列がすでにブール値の場合は、user.adminを呼び出すことができますか?管理者を持たずに自動的にtrueまたはfalseを返しますか?メソッドを呼び出します。 – n0denine