1

以下のようにフォーム認証Cookieを設定しています

FormsAuthentication.SetAuthCookie("test", true);

そして、そのセットがnullを返すかどうかを確認すると...

Context.User.Identity.Name

なぜこれが起こっているのですか?ありがとう

4

1 に答える 1

4

フォーム認証 Cookie を設定した後は、常にリダイレクトする必要があります。

public ActionResult SomeAction()
{
    FormsAuthentication.SetAuthCookie("test", true);    
    return RedirectToAction("FooBar");
}

リダイレクト先の後続のアクションでのみ、User.Identity.Name適切に初期化されます。その理由は非常に単純です。User.Identity.Nameプロパティはリクエスト Cookie (別名受信 Cookie) から初期化されますがFormsAuthentication.SetAuthCookie、フォーム認証が応答 (Cookie の発行) に設定されているため、後続の要求ではこの Cookie が要求で送信されます。 .

于 2013-03-17T14:02:22.550 に答える