Я работаю над самодельным проектом и получаю ошибку, упомянутую выше.Я создал 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()
?Я хотел бы понять это.:)