用于检索用户名的IPrincipal或Membership

时间:2010-01-21 19:21:19

标签: asp.net asp.net-mvc

检索视图的用户名有什么区别?

<%= Page.User.Identity.Name %>

<%= Membership.GetUser().UserName %>

4 个答案:

答案 0 :(得分:4)

根据the documentationGetUser 从数据源获取信息,并更新当前登录成员资格用户的上次活动日期/时间戳。 < / p>

Page.User.Identity.Name不这样做。它读取内存中随时可用的信息。

答案 1 :(得分:3)

Page.User.Identity.Name给出当前登录用户的身份。 Membership.GetUser()允许您获取有关用户的信息。

BTW,调用不带参数的getUser()与

相同
Membership.GetUser(Page.User.Identity.Name) 

因此,如果您只需要userName,请使用Page.User.Identity.Username并使用Membership.GetUser()获取有关用户的更多信息,例如电子邮件,或者对用户执行操作,例如更改密码

希望它会有所帮助

答案 2 :(得分:2)

当页面通过管道时,

Page.User.Identity会被填充。

Membership.GetUser()。UserName从数据库,Active Directory或提供程序支持的任何其他地方再次获取信息,从而导致第二次查找。

它不太可能改变,所以我使用Page.User.Identity。

答案 3 :(得分:0)

请注意,User.Identity.Name很可能引用成员数据库中甚至不存在的用户。这是表单身份验证和User概念的一般抽象,它甚至不一定存在于成员资格数据库中。

如果从成员资格数据库中删除当前用户,则User.Identity.Name将保留其原始值。