根据我的问题。这会为匿名用户和登录用户生成相同的用户名吗?
编辑:抱歉这个令人困惑的问题。我想要找出的是,如果User.Identity.Name是获取当前登录用户的用户名的可靠方法。试图避免使用Membership.GetUser()。用户名为GetUser()可能会为匿名用户返回null。答案 0 :(得分:5)
我不确定 Generate 是最好的词。我假设你的意思是返回相同的数据。
答案是并不总是。
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") ]
}