Asp.net mvc 5 如何获取当前登录用户的用户对象
在控制器中获取当前登录用户的Identity User对象(从Identity framework)的正确方法是什么 我需要针对用户(表AspNetUsers)更新一些属性,但不知道获取用户对象的正确方法,因此我可以执行以下操作:Asp.net mvc 5 如何获取当前登录用户的用户对象,asp.net-mvc-5,asp.net-identity,Asp.net Mvc 5,Asp.net Identity,在控制器中获取当前登录用户的Identity User对象(从Identity framework)的正确方法是什么 我需要针对用户(表AspNetUsers)更新一些属性,但不知道获取用户对象的正确方法,因此我可以执行以下操作: var menuItem = context.MenuItems.First(m => m.Description == "New Order"); var user = ?????????? user.MenuItems.Add(menuItem)
var menuItem = context.MenuItems.First(m => m.Description == "New Order");
var user = ??????????
user.MenuItems.Add(menuItem);
context.SaveChanges();
通过添加一些属性并重命名类,我稍微修改了原始用户模型:
public class User : IdentityUser
{
public string FirstName { get; set; }
public string LastName { get; set; }
public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<User> manager)
{
var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);
return userIdentity;
}
public virtual ICollection<MenuItem> MenuItems { get; set; }
}
公共类用户:IdentityUser
{
公共字符串名{get;set;}
公共字符串LastName{get;set;}
公共异步任务GenerateUserIdentityAsync(用户管理器)
{
var userIdentity=wait manager.CreateIdentityAsync(这是DefaultAuthenticationTypes.ApplicationOkie);
返回用户身份;
}
公共虚拟ICollection菜单项{get;set;}
}
那么,如何从控制器中检索此
用户
对象呢?在控制器类中,使用名称空间Microsoft.AspNet.Identity并按如下方式获取当前用户:
var user = User.Identity;
例如:
using Microsoft.AspNet.Identity;
...
public class FooController : Controller
{
[Authorize]
public ActionResult Index()
{
var user = User.Identity;
...
return View();
}
}
已编辑
获取配置文件信息:
提供向用户添加配置文件信息的步骤
要检索用户数据,您应该:
获取用户名
var userName = User.Identity.Name;
Get the user using static method created below.
var user = GetCurrentUser(userName);
获取用户的静态方法
public static User GetCurrentUser(string userName)
{
var userManager = new UserManager<User>(new UserStore<User>(new YourIdentityDbContext()));
var user = userManager.FindByName(userName);
return user;
}
公共静态用户GetCurrentUser(字符串用户名)
{
var userManager=newusermanager(newuserstore(newyourIdentityDBContext());
var user=userManager.FindByName(用户名);
返回用户;
}
谢谢。我已向我的用户添加了其他属性(请参见我的编辑)。如何访问这些?@Lock检查我编辑的答案。我认为这个链接应该能帮助你: