ASP.NET MVC - show/hide link 基于微软活动目录服务角色的网页
ASP.NET MVC - show/hide link to webpage based on microsoft active directory service role
这是我正在尝试做的事情:
我的(非常小的)网络应用程序公开了一个供 public 使用的表单。在那个表格上有一个 link,只有那些被分配到我公司某个部门角色的人才能看到:"Marketing" 通过 Microsoft 的 Active Directory。这是我第一次使用 Microsoft 的 Active Directory 和任何形式的身份验证,所以请保持温和。
我已经在 IIS 和我的 web.config 文件中更改了网站的权限,在根目录下,我添加了:
<authentication mode="Windows"/>
<authorization>
<allow roles="Marketing"/>
<deny users="*" />
</authorization>
并且在表单页面的代码中,link 由以下内容公开:
@if (User.Identity.IsAuthenticated)
{
<p>@User.Identity.Name</p>
<p></p>
@Html.ActionLink("Access to Backend", "Index", "Requests")
}
我意识到在这样做时,整个表单对于角色之外的人来说是不可访问的,因为上面的代码没有将身份验证限制为 link,而是应用于整个站点(因为它处于根级别)。
站点结构如下:
--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
如何将其限制为较小的 link,然后将对网站 'backend' 页面的访问限制为营销页面中的页面?
我知道这已经有一个多月了。可惜没看。也许你找到了答案,但我还是会分享。
从你的 web.config 中取出 authorization
标签。相反,使用 AuthorizeAttribute
将角色应用于您的控制器(或单个操作),如下所示:
[Authorize(Roles = "Marketing")]
使用 Windows 身份验证,角色是 AD 组,因此您应该在与名为 "Marketing" 的服务器相同的域中有一个组才能工作。如果该组在不同的域中,那么您将需要指定域,例如
[Authorize(Roles = "DOMAIN\Marketing")]
这是我正在尝试做的事情: 我的(非常小的)网络应用程序公开了一个供 public 使用的表单。在那个表格上有一个 link,只有那些被分配到我公司某个部门角色的人才能看到:"Marketing" 通过 Microsoft 的 Active Directory。这是我第一次使用 Microsoft 的 Active Directory 和任何形式的身份验证,所以请保持温和。
我已经在 IIS 和我的 web.config 文件中更改了网站的权限,在根目录下,我添加了:
<authentication mode="Windows"/>
<authorization>
<allow roles="Marketing"/>
<deny users="*" />
</authorization>
并且在表单页面的代码中,link 由以下内容公开:
@if (User.Identity.IsAuthenticated)
{
<p>@User.Identity.Name</p>
<p></p>
@Html.ActionLink("Access to Backend", "Index", "Requests")
}
我意识到在这样做时,整个表单对于角色之外的人来说是不可访问的,因为上面的代码没有将身份验证限制为 link,而是应用于整个站点(因为它处于根级别)。
站点结构如下:
--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
如何将其限制为较小的 link,然后将对网站 'backend' 页面的访问限制为营销页面中的页面?
我知道这已经有一个多月了。可惜没看。也许你找到了答案,但我还是会分享。
从你的 web.config 中取出 authorization
标签。相反,使用 AuthorizeAttribute
将角色应用于您的控制器(或单个操作),如下所示:
[Authorize(Roles = "Marketing")]
使用 Windows 身份验证,角色是 AD 组,因此您应该在与名为 "Marketing" 的服务器相同的域中有一个组才能工作。如果该组在不同的域中,那么您将需要指定域,例如
[Authorize(Roles = "DOMAIN\Marketing")]