4

奇妙な問題があります。

次のコードを含むページがあります。

if (!HttpContext.Current.User.Identity.IsAuthenticated)
    {
        Server.Transfer(@"~/Views/Public/Unauthorised.aspx");
        return;
    }

なんらかの理由で、1 人のユーザー (そして、そのユーザーを 1 台のマシンと Windows ログオン プロファイルに絞り込みました) では、IsAuthenticated常に false が返されます。彼は Web サイトにログインしていても、認証されたユーザーを必要とする他のページに移動できます。この1ページを除いて。

マシンがすべての Cookie を受け入れることを確認しましたが、それでも同じ問題が発生します。ここからどこに行けばいいのかわからない...何か提案はありますか?

4

1 に答える 1

7

この動作を引き起こす可能性がある既知のケースが少なくとも 2 つあります。

requireSSL="true"認証セッションをオンに設定しweb.config、非セキュア ページからその関数を呼び出す最初のケース。そのため、ページが安全かどうかを再確認してください。requireSSL="true"

Debug.Assert(Request.IsSecureConnection, "The IsAuthenticated will fail.");
if (!HttpContext.Current.User.Identity.IsAuthenticated)
{
    Server.Transfer(@"~/Views/Public/Unauthorised.aspx");
    return;
}

2 番目のケースdomain="site.com"は、web.config 内で認証セッションの再設定を行っておらず、 からwww.yoursitename.comとから Cookie を 1 回ずつ要求しようとした場合ですyoursitename.com。その場合、認証 Cookie が異なり、失敗します。そのため、web.config で特にそのパラメーターを設定します。

<authentication mode="Forms">
  <forms domain="yoursitename.com"  />
</authentication>
于 2012-12-20T14:24:04.803 に答える