Fluent Security を使用して、DenyAnonymousAccess、DenyAuthenticationAccess、および RequireRole を使用して Web サイト アクセスを構成しました。ただし、HandleSecurityAttribute
は認可フィルターではないため、処理するすべてのロジックはDenyAnonymousAccessPolicyViolation
、 などの認可フィルターの後にのみ実行されValidateAntiForgeryToken
ます。
これは、現在のユーザーの認証チケットがタイムアウトの場合ValidateAntiForgeryToken
、トークンが匿名ユーザー用に作成されていないため、 で装飾されたすべてのアクションが例外をスローすることを意味します。
これを回避する方法はありますか?現在、次の 2 つのソリューションを検討しています。
- セキュリティが行うことを正確に実行するために、独自の承認フィルターを作成
HandleSecurityAttribute
します。 - グローバル
Authorize
ファイラーを使用して認証を処理し、ロールやその他のアクセス ポリシーを FluentSecurity に任せます。
アップデート:
github でデモをチェックインしました。このユーザー名とパスワードは dev1 と devdev です。フォーム認証のタイムアウトを 1 分に設定しました。したがって、ログインして 1 分間待ってからログオフをクリックすると、匿名ユーザーに対してトークンが作成されていないことがわかります。通常の MVC では、ユーザーをログイン画面にリダイレクトする [ValidateAntiForgeryToken] の前に [Authorize] が実行されるため、これは発生しません。