2014-09-28 218 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; 
          } 
    
    相關問題