Я пытаюсь реализовать схему аутентификации в моем приложении.Контроллер, а точнее метод, отвечающий за проверку учетных данных пользователя и генерацию jwt, который он затем должен поместить в cookie-файл httponly, выглядит следующим образом
[HttpPost]
[Route("authenticate")]
public async Task<IActionResult> Authenticate([FromBody] User user)
{
var response = await _repository.User.Authenticate(user.Login, user.Password);
if (!response) return Forbid();
var claims = new List<Claim>
{
new Claim("value1", user.Login)
};
string token = _jwtService.GenerateJwt(claims);
HttpContext.Response.Cookies.Append(
"SESSION_TOKEN",
"Bearer " + token,
new CookieOptions
{
Expires = DateTime.Now.AddDays(7),
HttpOnly = true,
Secure = false
});
return Ok();
}
Я тестировал этот метод в Postman - все работает аккуратно и правильнотам.Файл cookie также создается.Более того, недавно я создал приложение с использованием Angular, в котором использовался один и тот же метод аутентификации, но с помощью http-модуля Angular cookie создавался все время.Вот как этот метод выглядит в моем приложении React с использованием Axios
export const authenticate = async (login, password) => {
return await axiosLocal.post('/api/auth/authenticate',
{login, password}).then(response => {
return response.status === 200;
}, () => {
return false;
});
Все, что я получаю в ответ при попытке войти в систему, - это код ответа 200. Я почти уверен, что это что-то про Axiosнастройки.Также, если кому-то интересно, переменная «axiosLocal» содержит baseURL для API.
- обновление 1 Ok.Если я не ошибаюсь, чтобы установить cookie из ответа, я должен отправить все запросы с опцией {withCredentials: true}.Но когда я пытаюсь сделать это, запрос блокируется CORS, хотя я уже установил политику cors, которая должна разрешать обработку запросов из любого источника, подобного этому
app.UseCors(builder => builder.AllowAnyHeader()
.AllowAnyMethod()
.AllowAnyOrigin()
.AllowCredentials());