【发布时间】:2018-09-20 13:57:53
【问题描述】:
我正在做一个自制项目,我收到了上面提到的错误。我创建了 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)会引发错误,反之亦然。我想被重定向而不是这个错误。
所以我有两个问题。为什么我会收到User.IsInRole(string parameter) 条件的错误,@Html.AntiForgeryToken() 是做什么的?我想了解它。 :)
【问题讨论】:
标签: c# asp.net asp.net-mvc