Code: Select all
public async Task Login(UserDto request)
{
bool loginStatus = await serverAuthService.LoginAsync(request);
if(loginStatus is false)
{
return BadRequest("Invalid");
}
return Ok("Login: " + loginStatus);
}
< /code>
Und die Servicemethode lautet: < /p>
public async Task LoginAsync(UserDto request)
{
var user = await context.Users.FirstOrDefaultAsync(u => u.Name == request.Name);
if (user is null)
{
return false;
}
var claims = new List
{
new Claim(ClaimTypes.Name, user.Name),
new Claim(ClaimTypes.NameIdentifier, user.Id.ToString()),
new Claim(ClaimTypes.Role, user.Role)
};
var identity = new ClaimsIdentity(claims, "MyCookieAuth");
var principal = new ClaimsPrincipal(identity);
var authProperties = new AuthenticationProperties
{
IsPersistent = true,
};
await _httpContextAccessor.HttpContext!.SignInAsync(
"MyCookieAuth",
principal,
authProperties);
return true;
}
// Add authentication services with cookie scheme
builder.Services.AddAuthentication("MyCookieAuth")
.AddCookie("MyCookieAuth", options =>
{
options.Cookie.Name = ".AspnetCore.Cookie";
options.Cookie.HttpOnly = true;
options.LoginPath = "/login";
options.ExpireTimeSpan = TimeSpan.FromMinutes(60);
});
< /code>
Nach bestem Wissen mache ich alles richtig. Der logische Fluss entspricht im Grunde der Microsoft -Dokumentation, und dennoch, wenn ich diese ausführte und sie testet, ist kein Cookie an meinen Client -Browser angehängt.>