2013-05-06 40 views
-3

根據我的問題。這是否會爲匿名用戶和登錄用戶生成相同的用戶名?將User.Identity.Name生成與Membership.GetUser()相同的數據。用戶名

編輯:對不起,令人困惑的問題。我試圖找出的是,如果User.Identity.Name是一種可靠的方式來獲取當前登錄用戶的用戶名。試圖避免Membership.GetUser()。作爲GetUser()的用戶名可能爲匿名用戶返回null。

回答

5

我不確定生成是最好的單詞。我會假設你的意思是返回相同的數據

答案是並非總是

User.IdentityIIdentity實例(通常是GenericIdentityWindowsIdentity)。

Membership.Getuser()將返回MembershipUser的實例。

這兩種機制都可以定製,技術上可以返回完全不同的信息。

更新了編輯

首先,這個問題開始聽起來像一個XY Problem。我強烈建議你讓我們知道你是什麼實際上試圖解決

雖然Membership.GetUser()應該爲匿名用戶返回null,User.Identity.Name通常返回string.Empty匿名用戶也是技術上不正確。

通常推薦的方法是做類似: (在ASP.Net MVC 3模板啓動直接取自)

@if(Request.IsAuthenticated) 
{ 
    <text>Welcome <b>@Context.User.Identity.Name</b>! 
    [ @Html.ActionLink("Log Off", "LogOff", "Account") ]</text> 
} 
else 
{ 
    @:[ @Html.ActionLink("Log On", "LogOn", "Account") ] 
}