Итак, у вас есть webApi, который вы используете для аутентификации ваших пользователей, и когда ваш пользователь проходит аутентификацию, вы получаете токен jwt, верно?и вам нужно сохранить этот токен в файле cookie, чтобы ваш клиентский интерфейс использовал его для выполнения запросов.
, так что здесь приведен пример кода, который я написал для этого, - asp core api в моем aspcore API AccountsController => Действие при входе:
[HttpPost]
public async Task<IActionResult> Login([FromBody] LoginViewModel vm)
{
if (ModelState.IsValid)
{
var token = await _authenticationService.GenerateToken(vm);
if (token != null)
{
return Ok(new
{
token = new JwtSecurityTokenHandler().WriteToken(token),
expiration = token.ValidTo
});
}
return Unauthorized();
}
return StatusCode(StatusCodes.Status403Forbidden, new { ErrorMessage = "wrong Email or password" });
}
_authenticationService - это класс, который я написал для generatae jwt token:
public async Task<JwtSecurityToken> GenerateToken(LoginViewModel vm)
{
if (!string.IsNullOrEmpty(vm.Email) && !string.IsNullOrEmpty(vm.Password))
{
var user = await _userManager.FindByEmailAsync(vm.Email);
var userRoles = await _userManager.GetRolesAsync(user);
var signingKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_configuration.GetSection("Secrets:SigningKey").Value));
var claims = new List<Claim>
{
new Claim(JwtRegisteredClaimNames.Sub, vm.Email)
};
foreach (var roleName in userRoles)
{
claims.Add(new Claim(ClaimsIdentity.DefaultRoleClaimType, roleName));
};
if (user != null && await _userManager.CheckPasswordAsync(user, vm.Password))
{
var token = new JwtSecurityToken(
issuer: _configuration.GetSection("Secrets:issuer").Value,
audience: _configuration.GetSection("Secrets:audience").Value,
expires: DateTime.UtcNow.AddDays(20),
signingCredentials: new SigningCredentials(signingKey, SecurityAlgorithms.HmacSha256),
claims: claims);
return token;
}
return null;
}
return null;
}
, поэтому в приведенном выше коде вы отправляете хорошие учетные данные для вашего API.Вы получите обратно JWT токен.теперь вам нужно сохранить этот токен в cookie, для этого вам нужно создать cookie в вашем интерфейсе, а не в веб-интерфейсе API.
, поэтому вы можете увидеть эту ссылку в angular-university