リソースに@RequiresGuestアノテーション付きのメソッドがあります。ログインしたユーザーがリンクにアクセスするUnauthenticatedException
と、このメッセージが表示されます。
ゲストのみの操作を実行しようとしています。現在のサブジェクトはゲストではありません(以前のログインから認証または記憶されています)。アクセス拒否。
しかし、どうすればそれを処理できますか?たとえば、リクエストをログアウトページにリダイレクトするにはどうすればよいですか?
これは通常、選択した MVC フレームワークに依存します。
ただし、これに MVC メカニズムを使用したくない場合は、これを行うサーブレット フィルターを作成することができます。
フィルターは、try/catch ブロックで FilterChain を実行し、AuthorizationException をキャッチします。1 つをキャッチすると、「unauthorizedUrl」への 302 リダイレクトを発行します。
Shiro の既存のフィルターがこれを行わない理由は、FilterChain を呼び出す前にサブジェクトを承認するためです。サブジェクトが承認基準を満たさない場合、フィルター チェーンは呼び出されません(したがって、キャッチする AuthorizationException はありません)。
Shiro で別の動作を確認したい場合は、Issue を提出し、潜在的な新機能として議論してください。