1

私は declarative_authorization を使用しており、コントローラーには次のものがあります。

filter_access_to :index, :new, :edit, :step, :create, :update, :destroy

省略されているアクションが 2 つあります。:show, :compare. ただし、これらのアクションのいずれかの URL にアクセスすると、ログイン画面が表示されます。

どうしてこれなの ?

そのコントローラーに他のフィルターがない場合 (ApplicationsController から継承されたものを除く)、省略されたアクションをログインしていないときに表示できるようにすべきではありませんか?

4

1 に答える 1

3

それはdeclarative_authorizationとは関係ありません...それはDeviseの(またはあなたの認証メカニズムが何であれ)ドメインです。代わりに、ユーザーが認証されているかどうかを確認する before_filter を変更して、スキップするアクションの例外を含めます。

例えば。に変更before_filter :authenticate_user!before_filter :authenticate_user!, :except=>[:public_action, :other_public_action]ます。

また、アプリケーション コントローラー内で before_filter が設定されている場合は、コントローラー内でそれをオーバーライドして、例外を設定し、そこに mod を作成することができます。

于 2011-03-05T20:30:16.560 に答える