2013-05-06 12 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") ] 
}