加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – ASP.NET Identity Extend方法来访问用户属性

发布时间:2020-12-15 03:59:12 所属栏目:百科 来源:网络整理
导读:我可以扩展访问用户属性的方法吗? 有以下方法: User.Identity.GetUserId()User.Identity.GetUserName() 哪些可以从视图和控制器访问. 我想用以下方法扩展这个功能: User.Identity.GetUserPhoneNumber()User.Identity.GetUserLanguaje() 解决方法 类似的问
我可以扩展访问用户属性的方法吗?

有以下方法:

User.Identity.GetUserId()
User.Identity.GetUserName()

哪些可以从视图和控制器访问.

我想用以下方法扩展这个功能:

User.Identity.GetUserPhoneNumber()
User.Identity.GetUserLanguaje()

解决方法

类似的问题: Need access more user properties in User.Indentity由codeplex工作日的微软专业人士回答如下

“You can get the User object and do User.Email or User.PhoneNumber since these properties are hanging off the User model”

我们可以在ASP.Net身份中获取应用程序当前的User对象,从那里可以访问用户对象的所有属性,我们在mvc5网络应用程序中也是如此.

//In Account controller like this
var currentUser = UserManager.FindById(User.Identity.GetUserId());

在其他控制器中,您需要将以下内容添加到控制器中:

var manager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new ApplicationDbContext()));

  // Get the current logged in User and look up the user in ASP.NET Identity
  var currentUser = manager.FindById(User.Identity.GetUserId());

现在我们可以访问所有用户道具(电话号码和语言)如下

var phoneNumber = currentUser.PhoneNumber;
var userLanguage = currentUser.Language;

编辑:如果你想在任何view.cshtml或_Layout.cshtml中检索相同,那么你应该像下面这样做

@using Microsoft.AspNet.Identity
@using Microsoft.AspNet.Identity.EntityFramework
@using YourWebApplication.Models

@{
    var phoneNumber= string.Empty;
    var userLanguage = string.Empty;
    if (User.Identity.IsAuthenticated) {
        var userStore = new UserStore<ApplicationUser>(new ApplicationDbContext());
        var manager = new UserManager<ApplicationUser>(userStore);
        var currentUser = manager.FindById(User.Identity.GetUserId());

        phoneNumber = currentUser.PhoneNumber;
        userLanguage = currentUser.Language;
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读