Я пытаюсь добавить аутентификацию GitHub в мое приложение ASP.NET Core, чтобы определенные пользователи имели роль администратора. Эту роль я хочу реализовать через IdentityRole
, а пользователи должны храниться как IdentityUser
s.
Я использовал информацию из этого поста в качестве отправной точки.
Я настроил аутентификацию через GitHub так:
services
.AddAuthentication()
.AddGitHub(options =>
{
options.ClientId = "xxx";
options.ClientSecret = "xxx";
})
И мой метод Sigin в контроллере здесь:
public IActionResult SignIn(string provider, string returnUrl = null) =>
Challenge(new AuthenticationProperties { RedirectUri = returnUrl ?? "/" }, provider);
И я могу получить претензии GitHub через этот код:
public IActionResult Index()
{
var vm = new ProfileViewModel
{
Claims = User.Claims,
Name = User.Identity.Name
};
return View(vm);
}
Все работает и все хорошо, но это ClaimsPrincipal
не IdentityUser
. И я не понимаю, как я могу создать новый или идентифицировать ранее сохраненный IdentityUser
, используя эту претензию.
Вот набор статей от Microsoft об использовании внешних входов в систему, но они использовали страницы Razor и не предоставляют много информации, как это на самом деле связывается с IdentityUser
.
Как я могу сделать то же самое без использования страниц Razor?