1

Fluent Security を使用して、DenyAnonymousAccess、DenyAuthenticationAccess、および RequireRole を使用して Web サイト アクセスを構成しました。ただし、HandleSecurityAttributeは認可フィルターではないため、処理するすべてのロジックはDenyAnonymousAccessPolicyViolation、 などの認可フィルターの後にのみ実行されValidateAntiForgeryTokenます。

これは、現在のユーザーの認証チケットがタイムアウトの場合ValidateAntiForgeryToken、トークンが匿名ユーザー用に作成されていないため、 で装飾されたすべてのアクションが例外をスローすることを意味します。

これを回避する方法はありますか?現在、次の 2 つのソリューションを検討しています。

  1. セキュリティが行うことを正確に実行するために、独自の承認フィルターを作成HandleSecurityAttributeします。
  2. グローバルAuthorizeファイラーを使用して認証を処理し、ロールやその他のアクセス ポリシーを FluentSecurity に任せます。

アップデート:

github でデモをチェックインしました。このユーザー名とパスワードは dev1 と devdev です。フォーム認証のタイムアウトを 1 分に設定しました。したがって、ログインして 1 分間待ってからログオフをクリックすると、匿名ユーザーに対してトークンが作成されていないことがわかります。通常の MVC では、ユーザーをログイン画面にリダイレクトする [ValidateAntiForgeryToken] の前に [Authorize] が実行されるため、これは発生しません。

4

1 に答える 1

1

私はこれに問題はありませんでした。フィルタリストの最初にHandleSecurityAttributeを配置してください。

GlobalFilters.Filters.Add(new HandleSecurityAttribute(), 0);
于 2013-03-21T11:48:14.760 に答える