2010-11-27 10 views
2

HttpContext.Current.User.Identity.Nameは、LogOnの後にnullを返します。私はIIS7.0フレームワーク4.0を使用しています。私はtargetFrameworkが3.5である別のプロジェクトを持っています。それは良い作品です。しかし、私の新しいプロジェクトのtargetFrameworkは4.0です。 HttpContext.Current.User.Identity.Nameを呼び出すとnullが返されるASP.NET MVC HttpContext LogOn後のIdentityNameの取得

答えて

7

このプロパティを使用するには、ログイン後にHTTPリダイレクトを発行する必要があります。リダイレクト後、後続のリクエストでこのリダイレクトを使用できます。

public ActionResult LogOn() 
{ 
    FormsAuthentication.SetAuthCookie("someuser", false); 
    return RedirectToAction("foo"); 
} 

[Authorize] 
public ActionResult Foo() 
{ 
    // use the logged in user here without problems 
    string userName = User.Identity.Name; 
    return View(); 
} 
+0

はい、わかりました。私はそれをテストした/それは働いた。しかし、なぜ私はそれをFormsAuthentication.SetAuthCookie( "someuser"、false)の後に呼び出すことはできません。 – AEMLoviji

+3

'User.Identity.Name'は** Request **に存在する認証クッキーを使用してこのプロパティを設定し、' FormsAuthentication.SetAuthCookie'を呼び出した後はリクエストにそのようなクッキーはありません。クライアントブラウザーは後続の呼び出しで要求を送信します。そのため、ログインした後は常にリダイレクトする必要があります。 –

+0

Darin Dimitrowの良い回答と良い説明。ありがとう – AEMLoviji

0

また、リフレクションを使用してログオンページのUser.Identity.Nameプロパティを設定する方法もあります。次に、プロパティは、別のページに最初にリダイレクトせずに設定されます。これは、ハックのようなものです。

関連する問題