这就是我要做的事情:我的(非常小的)网络应用程序公开了一个公众使用的表单。在该表单上是一个链接,只有那些被分配到我公司某个部门角色的人才能看到:通过Microsoft的Active Directory“营销”。这是我第一次使用Microsoft的Active Directory和任何形式的身份验证,所以请保持温和。
我已经在IIS和我的web.config文件中对站点的权限进行了更改,在根目录中,我添加了:
<authentication mode="Windows"/>
<authorization>
<allow roles="Marketing"/>
<deny users="*" />
</authorization>
在表单页面的代码中,链接通过以下方式公开:
@if (User.Identity.IsAuthenticated)
{
<p>@User.Identity.Name</p>
<p></p>
@Html.ActionLink("Access to Backend", "Index", "Requests")
}
我意识到,在这样做时,整个表单对于角色之外的人来说是不可访问的,因为上面的代码不会将身份验证限制为链接,而是应用于整个站点(因为它位于根级别) )。
网站结构如下:
--Form Page (open to public)
/Form (with hidden link to the Backend Page/Counts) -- needs to be hidden
---Backend Page (restricted to Marketing page)
/Counts
/Edit
/Delete
/Details
如何将其限制为小链接,然后将对网站“后端”页面的访问限制为“营销”页面中的页面?
我知道这已经有一个多月了。对不起它没有看到。也许你找到了答案,但无论如何我都会分享。
从web.config中取出authorization
标记。相反,使用AuthorizeAttribute
将角色应用于您的控制器(或单个操作),如下所示:
[Authorize(Roles = "Marketing")]
使用Windows身份验证时,角色是AD组,因此您应该在与名为“Marketing”的服务器相同的域中创建一个组,以使其工作。如果该组位于不同的域上,则您需要指定域,例如
[Authorize(Roles = "DOMAIN\Marketing")]