Cześć,
Otóż dodając Identity, nie umiem się zorientować jak dostać się do Claima (przykładowo ID albo Username użytkownika). Tak wygląda kod używajac scaffold item => add identity => login. Jest to Razor Page, I teraz, chce wydobyć np. Role czy Id czy cokolwiek.
Po pierwsze, chciałbym uzyskać dostęp w kontrolerze, po drugie chciałbym użyć tego w Razor View
if (result.Succeeded)
{
_logger.LogInformation("User logged in.");
return LocalRedirect(returnUrl);
}
Tak wygląda to obecnie u mnie (zmieniałem już to tysiąc razy)
if (result.Succeeded)
{
var user = await _userManager.FindByEmailAsync(Input.Email); //przykładowo
await _userManager.AddClaimAsync(user, new Claim(ClaimTypes.Role, "NormalUser")) //dodanie Claim
var claimsPrincipal = await _signInManager.CreateUserPrincipalAsync(user);
await _signInManager.RefreshSignInAsync(user);
[...]
Czytałem, że to może pomóc ale pogubiłem się w tych Claimach, a co dopiero jakiś Threading:
Thread.CurrentPrincipal = claimsPrincipal;
Wiecie, nie czaje jak w View się do tego dostać Razor/C# Syntaxem(@).
Do czego ja z tym ogólnie zmierzam, przykładowo logując się w mojej "super aplikacji, wchodząc w ścieżke "/me", za pomoc Claima bym znajdował czy to UserName czy czy ID i tak bym mógłbym w kontrolerze przypisać różne wartości z bazy danych, przydałby się też w Ajaxie, żeby działać tylko na tym użytkowniku.
Chyba, że używa się jakiegoś User Manager w identity do wydobywania treści z bazy danych, choć póki co na takie coś się nie natkąłem.