В методе Get работает, в POST нет

153
13 декабря 2021, 18:20

есть метод: в этом исполнении currentUser равен нулл

        [HttpPost("[action]/{post}")]
        public async Task SaveUserPost(string post)
        {
            var currentUser = await db.Users.FirstOrDefaultAsync(x => x.UserName == User.Identity.Name);
            if (currentUser != null)
            {               
                currentUser.UserPosts
                    .Add(new UserPost { AuthorPost=currentUser.UserName, Post = post, TimeOfPublication = DateTime.Now, User=currentUser });
                db.Update(currentUser);
                await db.SaveChangesAsync();
            }
        }

если переделываю на гет, то все работает идеально

[HttpGet("[action]/{post}")]
        public async Task SaveUserPost(string post)
        {
            var currentUser = await db.Users.FirstOrDefaultAsync(x => x.UserName == User.Identity.Name);
            if (currentUser != null)
            {               
                currentUser.UserPosts
                    .Add(new UserPost { AuthorPost=currentUser.UserName, Post = post, TimeOfPublication = DateTime.Now, User=currentUser });
                db.Update(currentUser);
                await db.SaveChangesAsync();
            }
        }

С клиента в обоих случаях уходит токен с данными и все что необходимо, почему в пост методе я не могу получить идентифицированного юзера, а в гет все без проблем? Это ошибка в моем проекте? или есть законные основания?:)

Answer 1

Решил, на клиенте шлю запрос

saveUserPost(post) {
    let token = localStorage.getItem("jwt");
    return this.http.post(this.urlUser + "/" + "SaveUserPost", { text: post }, {
      headers: new HttpHeaders({
        "Authorization": "Bearer " + token,
        "Content-Type": "application/json"
      })
    });
  }

на сервере создал модель с текстовым полем, и принимаю эту модель

[HttpPost("[action]")]
        public async Task SaveUserPost([FromBody] PostModel post)
        {
            var currentUser = await db.Users.FirstOrDefaultAsync(x => x.UserName == _httpContextAccessor.HttpContext.User.Identity.Name);
            if (currentUser != null)
            {               
                currentUser.UserPosts
                    .Add(new UserPost { AuthorPost=currentUser.UserName, Post = post.Text, TimeOfPublication = DateTime.Now, User=currentUser });
                db.Update(currentUser);
                await db.SaveChangesAsync();
            }
        }
READ ALSO
чтение текстового файла и работа с ним c# winforms

чтение текстового файла и работа с ним c# winforms

дан файл f,содержащий сведения о кубиках : размер каждого кубика(длина ребра),его цвет(красный,желтый) и материал(деревянный,пластмассовый)...

204
Важно ли при обучении выбирать книгу по 7й версии C#, а не по 4й?

Важно ли при обучении выбирать книгу по 7й версии C#, а не по 4й?

Не могу понять и определиться, какую книгу сейчас мне прочитать: https://wwwozon

163
Как Opencart обрабатывает quantity или как поменять целочисленное количество товара на дробное

Как Opencart обрабатывает quantity или как поменять целочисленное количество товара на дробное

Есть такая функция-обработчик формыС вида данные отправляются ajax/ После обработки функцией, данные передаются обратно, в вид, в формате json

229