2014-09-28 225 views
1

在控制器中获取当前登录用户的身份用户对象(来自身份框架)的正确方法是什么?如何获取当前登录用户的用户对象

我需要更新对用户(表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对象:通过增加一些属性和重命名类原始用户模式?

回答

3

在控制器类中使用的命名空间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给出了将配置文件信息添加到用户的步骤。

要检索您应该将用户数据:

  1. 获取当前登录用户ID中,所以你可以看看在 ASP.NET识别系统用户达

VAR currentUserId = User.Identity.GetUserId();

  • 实例化的UserManager在ASP.Identity系统以便可以看 了用户在系统中
  • 变种经理=新的UserManager(新UserStore (new MyDbContext()));

  • 获取用户对象
  • 变种currentUser = manager.FindById(User.Identity.GetUserId());

  • 获取关于用户
  • currentUser.MyUserInfo的简档信息。名字

    +0

    三江源。我向用户添加了其他属性(请参阅我的编辑)。我如何访问这些? – Lock 2014-09-29 01:23:00

    +0

    @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

    0

    获取用户名

    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; 
          } 
    
    相关问题