根据我的问题。这是否会为匿名用户和登录用户生成相同的用户名?将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") ]
}