根據我的問題。這是否會爲匿名用戶和登錄用戶生成相同的用戶名?將User.Identity.Name生成與Membership.GetUser()相同的數據。用戶名
編輯:對不起,令人困惑的問題。我試圖找出的是,如果User.Identity.Name是一種可靠的方式來獲取當前登錄用戶的用戶名。試圖避免Membership.GetUser()。作爲GetUser()的用戶名可能爲匿名用戶返回null。
根據我的問題。這是否會爲匿名用戶和登錄用戶生成相同的用戶名?將User.Identity.Name生成與Membership.GetUser()相同的數據。用戶名
編輯:對不起,令人困惑的問題。我試圖找出的是,如果User.Identity.Name是一種可靠的方式來獲取當前登錄用戶的用戶名。試圖避免Membership.GetUser()。作爲GetUser()的用戶名可能爲匿名用戶返回null。
我不確定生成是最好的單詞。我會假設你的意思是返回相同的數據。
答案是並非總是。
User.Identity
是IIdentity
實例(通常是GenericIdentity或WindowsIdentity)。
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") ]
}