1

認証モードが「windows」の場合、MVC で customAuthorization を実行しようとしています。

    public override void OnAuthorization(AuthorizationContext filterContext)
    {

        #region if
        if (HttpContext.Current.User.Identity.IsAuthenticated)
        { .......}
     }

しかし、常に IsAuthenticated は false を返します。onAuthorization(..) の前に Windows 認証を呼び出す方法がわかりません。

しかし、私がこれを好きなとき:

public override void OnAuthorization(AuthorizationContext filterContext)
    {

        #region if
        if (HttpContext.Current.User.Identity.IsAuthenticated)
        { .......}else{
         **base.OnAuthorization(filterContext);**
         }
     }

base.onAuthorization() が原因で onAuthorization() メソッドが繰り返しヒットしており、2 回目の試行では IsAuthenticated が true を返しています。

この動作の理由を知ることができますか?

グーグルで検索すると、フォーム認証モードでは IsAuthenticated が true になるが、Windows モードでは true にならないという結果が表示されました。以下のリンクで述べたように

http://www.anujvarma.com/windows-ad-authentication-and-the-authorize-attributelogin-popup/

私を助けてください。

4

1 に答える 1

2

問題は解決しました。IISサーバー設定でallowanonymousプロパティを無効にすると、期待どおりに機能し始めました。つまり、onauthorization(..)を押す前にユーザーが認証されています。

于 2014-07-08T18:57:43.850 に答える