Как получить текущий идентификатор пользователя, если я наследую от IdentityUser? - PullRequest
0 голосов
/ 01 мая 2020

Я добавляю некоторые поля в IdentityUser, такие как

public class CustomUser: IdentityUser
    {
        public string field1 {get;set;}
        public string field2 {get;set;}
    }

после миграции, в Sql Management Studio у меня были все данные, которые я добавил с .OnModelCreating

Но, как я могу получить любое поле от текущего авторизованного CustomUser (например, ID)

Я пытаюсь использовать

using Microsoft.AspNet.Identity;

CustomUser.Identity.GetUserId()

Но это не работает.

Спасибо за помощь!

Ответы [ 2 ]

1 голос
/ 01 мая 2020

В ASP. Net Ядро, если ваш Контроллер наследует Microsoft.AspNetCore.Mvc.Controller, вы можете получить IClaimsPrincipal из свойства User и получить фактический "Id" пользователя,

using System.Security.Claims;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Identity;

ClaimsPrincipal currentUser = this.User;
var currentUserID = currentUser.FindFirst(ClaimTypes.NameIdentifier).Value;

Вы также можете получить данные всех полей (включая Id) из объекта User базы данных:

1.DI UserManager

    private readonly UserManager<ApplicationUser> _userManager;

    public HomeController(UserManager<ApplicationUser> userManager)
    {
        _userManager = userManager;
    }

2. Используйте его, как показано ниже:

var id = userManager.GetUserId(User); // get user Id
var user = await userManager.GetUserAsync(User); // get user's all data
0 голосов
/ 01 мая 2020

Сначала необходимо сохранить данные пользователя в претензиях, а затем получить данные авторизованного пользователя.

Добавить заявки

var identity = new ClaimsIdentity(OAuthDefaults.AuthenticationType);
identity.AddClaim(new Claim(ClaimTypes.NameIdentifier, user.Id.ToString()));

Получить заявки

var userId = (HttpContext.Current.User.Identity as ClaimsIdentity).Claims.FirstOrDefault(x => x.Type == ClaimTypes.NameIdentifier)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...