我正在做一个自制项目,并且遇到上述错误。我创建了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()
会做什么?我想了解。 :)
答案 0 :(得分:0)
我找到了解决方案。我没有尝试在视图中处理此问题,而是在控制器中处理了它。尽管我仍然不明白为什么它会导致问题。