Ant*_*nio 10 c# asp.net-mvc asp.net-identity
我可以扩展方法来访问用户属性吗?
有一些方法,如:
User.Identity.GetUserId()
User.Identity.GetUserName()
Run Code Online (Sandbox Code Playgroud)
可以从视图和控制器访问.
我想用以下方法扩展此功能:
User.Identity.GetUserPhoneNumber()
User.Identity.GetUserLanguaje()
Run Code Online (Sandbox Code Playgroud)
Kot*_*nga 14
类似问题:需要访问User.Indentity中的更多用户属性,由Microsoft专业人员在codeplex工作日志中回答,如下所示
"您可以获取User对象并执行User.Email或User.PhoneNumber,因为这些属性已挂起User模型"
我们可以在ASP.Net标识中获取应用程序当前的User对象,从那里你可以访问用户对象的所有属性,我们在mvc5 web-apps中遵循相同的方法.
//In Account controller like this
var currentUser = UserManager.FindById(User.Identity.GetUserId());
Run Code Online (Sandbox Code Playgroud)
在其他控制器中,您需要将以下内容添加到控制器:
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());
Run Code Online (Sandbox Code Playgroud)
现在我们可以访问所有用户道具(电话号码和语言),如下所示
var phoneNumber = currentUser.PhoneNumber;
var userLanguage = currentUser.Language;
Run Code Online (Sandbox Code Playgroud)
编辑:如果你想在任何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;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10100 次 |
| 最近记录: |