@savva09
Начинающий .NET-ер

Почему не получается обработать response с сервера?

У меня есть скрипт, который привязан к сабмиту формы:
async function onform() {
    let url = "https://localhost:7182/api/login/Login?login=" + loginInput.value;
    let response = await fetch(url);

    let auth = await response.json(); // читаем ответ в формате JSON

    if (auth == true) {
        document.cookie = "auth=" + loginInput.value;
        const cookies = document.cookie.split(';');
        cookies.forEach(element => {
            if (element.startsWith('auth=')) alert("Login saved: " + element.substring(5));
        });
    } else {
        alert("Incorrect login")
    }
}


но у меня даже при правильном логине, когда сервер возвращает true(2й вариант очевидно false), алерт дает неправильный логин.

Вот код контроллера на сервере:
spoiler

[Route("api/[controller]")]
    [ApiController]
    public class LoginController : ControllerBase
    {
        [HttpGet("Login")]
        public ActionResult Login(string login)
        {
            if (login == "savva")
                return Ok(true);
            if (login is null)
                throw new ArgumentNullException(nameof(login));
            return Ok(false);
        }
    }



при простом браузерном обращении вижу просто true/false
при выполнении скрипта получения в консоли тоже вижу true/false
  • Вопрос задан
  • 128 просмотров
Пригласить эксперта
Ответы на вопрос 2
Geminix
@Geminix
Фуллстек nuxt, .net разработчик
у вас, вероятно, возвращается строка, а вы сравниваете с bool
Ответ написан
@savva09 Автор вопроса
Начинающий .NET-ер
я подумал что тут явно что-то не так, я использовал форму... я переделал так, чтоб вся информация обрабатывалась в контроллере:
[HttpGet("Login")]
        public ActionResult Login(string login)
        {
            if (login == "savva")
            {
                Response.Cookies.Append("auth", login);
                return Redirect("https://localhost:7182/Main/main.html");
            }
            if (login is null)
                throw new ArgumentNullException(nameof(login));
            return Redirect("https://localhost:7182/");
        }

также html:
<!DOCTYPE html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Hello!</title>
</head>
<body>
    <h1>Hello!</h1>
    <div>
        <h2>Please log in</h2>
        <form name="first" action="https://localhost:7182/api/login/Login">
            <input type="text" name="login" id="login" placeholder="login">
            <input type="submit" value="send">
        </form>
    </div>
</body>
</html>
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы