ASP.NET Core Identity - get current user

前端 未结 7 671
灰色年华
灰色年华 2020-12-07 11:48

To get the currently logged in user in MVC5, all we had to do was:

using Microsoft.AspNet.Identity;
[Authorize]
public IHttpActionResult DoSomething() {
             


        
7条回答
  •  太阳男子
    2020-12-07 12:33

    For context, I created a project using the ASP.NET Core 2 Web Application template. Then, select the Web Application (MVC) then hit the Change Authentication button and select Individual User accounts.

    There is a lot of infrastructure built up for you from this template. Find the ManageController in the Controllers folder.

    This ManageController class constructor requires this UserManager variable to populated:

    private readonly UserManager _userManager;
    

    Then, take a look at the the [HttpPost] Index method in this class. They get the current user in this fashion:

    var user = await _userManager.GetUserAsync(User);
    

    As a bonus note, this is where you want to update any custom fields to the user Profile you've added to the AspNetUsers table. Add the fields to the view, then submit those values to the IndexViewModel which is then submitted to this Post method. I added this code after the default logic to set the email address and phone number:

    user.FirstName = model.FirstName;
    user.LastName = model.LastName;
    user.Address1 = model.Address1;
    user.Address2 = model.Address2;
    user.City = model.City;
    user.State = model.State;
    user.Zip = model.Zip;
    user.Company = model.Company;
    user.Country = model.Country;
    user.SetDisplayName();
    user.SetProfileID();
    
    _dbContext.Attach(user).State = EntityState.Modified;
    _dbContext.SaveChanges();
    

提交回复
热议问题