如何获取当前登录用户的用户对象
问题描述:
在控制器中获取当前登录用户的身份用户对象(来自身份框架)的正确方法是什么?如何获取当前登录用户的用户对象
我需要更新对用户(表AspNetUsers)一些属性,不知道让用户对象,这样我可以做的事情,如正确方法:
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; }
}
那么,怎样才能找回我从我的控制器此User
对象:通过增加一些属性和重命名类原始用户模式?
答
在控制器类中使用的命名空间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();
}
}
编辑
获取个人资料信息: This link给出了将配置文件信息添加到用户的步骤。
要检索您应该将用户数据:
- 获取当前登录用户ID中,所以你可以看看在 ASP.NET识别系统用户达
VAR currentUserId = User.Identity.GetUserId();
- 实例化的UserManager在ASP.Identity系统以便可以看 了用户在系统中
- 获取用户对象
- 获取关于用户
变种经理=新的UserManager(新UserStore (new MyDbContext()));
变种currentUser = manager.FindById(User.Identity.GetUserId());
currentUser.MyUserInfo的简档信息。名字
答
获取用户名
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;
}
三江源。我向用户添加了其他属性(请参阅我的编辑)。我如何访问这些? – Lock 2014-09-29 01:23:00
@Lock检查我编辑的答案。我认为这个链接可以帮助你:http://blogs.msdn.com/b/webdev/archive/2013/10/16/customizing-profile-information-in-asp-net-identity-in-vs-2013- templates.aspx – 2014-09-29 09:15:40