Html.AntiForgeryToken () выдает ошибку «Сервер не может добавить заголовок после отправки заголовков HTTP». - PullRequest
0 голосов
/ 20 сентября 2018

Я работаю над самодельным проектом и получаю ошибку, упомянутую выше.Я создал 2 роли, которые я даю пользователям при регистрации.Эти две роли дают пользователям право взаимодействовать с определенными частями моей веб-страницы.

Роль "Пользователь" дает доступ к ~ / Jobs / Jobs, а роль "HR" - к ~ / Profile / Profiles,В моем представлении макета страницы, который отвечает за панель навигации, она работает отлично.Я вижу конкретную кнопку на панели навигации только тогда, когда у меня есть роль, необходимая для ее просмотра.

Прежде чем создавать эти роли, я просто использовал условие !User.Identity.IsAuthenticated(), которое перенаправляло пользователя на страницу входа, если пользовательне вошел в систему. Это условие было начальным условием для моих файлов .cshtml для конкретной роли.

         @{
              if (!User.Identity.IsAuthenticated())
              {
                  Response.Redirect("~/Account/Login");
              }
          }
          ...

Все работало нормально.

Теперь у меня есть свои роли, и я изменил их на!User.Identity.IsInRole(string parameter) условие, которое перенаправит пользователя на домашнюю страницу, но я получаю ошибку, упомянутую выше.Теперь это условие является начальным условием для моих файлов .cshtml, специфичных для ролей.

         @{
              if (!User.IsInRole("User")) // or "HR" on the other page
              {
                  Response.Redirect("~/Home/Index/");
              }
          }
          ...

Моя ошибка появляется в моем файле _LoginPartial.cshtml.

         @using Microsoft.AspNet.Identity
         @if (Request.IsAuthenticated)
         {
             using (Html.BeginForm("LogOff", "Account", FormMethod.Post, new { id = 
             "logoutForm", @class = "navbar-right" }))
         {

         @Html.AntiForgeryToken()
         ...

Я получаюошибка, когда я пытаюсь получить доступ к конкретной странице, которую мне не разрешено.Например, попытка добраться до требуемой роли «HR» (~ / Profile / Profiles) в качестве «пользователя» приводит к ошибке и наоборот.Я хотел бы быть перенаправлен вместо этой ошибки.

Итак, у меня есть 2 вопроса.Почему я получаю ошибку с условием User.IsInRole(string parameter) и что делает @Html.AntiForgeryToken()?Я хотел бы понять это.:)

1 Ответ

0 голосов
/ 20 сентября 2018

Я нашел решение.Вместо того, чтобы пытаться обработать это в представлении, я обработал это в моем контроллере.Хотя я все еще не понимаю, почему это вызвало проблемы с моей точки зрения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...