使用IPrincipal或Membership获取用户名

4

在视图中检索用户名的区别是什么?

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

或者
<%= Membership.GetUser().UserName %>
4个回答

4
根据文档GetUser从数据源获取信息并更新当前登录的会员用户的最后活动日期/时间戳。
Page.User.Identity.Name则不具备此功能,它只读取内存中已有的信息。

3

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

顺便说一下,调用不带参数的getUser()与调用Membership.GetUser()是相同的。

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

所以,如果您只需要用户名,请使用Page.User.Identity.Username,并使用Membership.GetUser()获取有关用户的更多信息,例如电子邮件,或对用户执行操作,例如更改密码。
希望这可以帮到您。

2

当页面通过管道时,Page.User.Identity会被填充。

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

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


0

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接