asp.net - ASP.NET MVC - 显示/隐藏基于微软活动目录服务角色的网页链接
问题描述
这就是我想做的事情:我的(非常小的)网络应用程序公开了一个供公众使用的表单。该表格上的链接应该只对我公司中被分配到某个部门角色的人可见:通过 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")]
推荐阅读
- python-3.x - Python CSV合并问题
- haskell - Haskell 安全货币示例
- sql - 如何为 Spark DataFrame 中的每一行创建和保存一个表?
- c# - 在 C# 中是否可以实例化在命名空间中找到的所有类?
- javascript - 从 fetch 请求返回的数据不是预期的
- javascript - 优化正则表达式,仅在字符串 javascript 中检测 emojis 和 emoji
- javascript - 有没有办法在单击某个链接时自动打开选项卡?
- javascript - 如何制作一个完整的可选择的?
- c - 动态分配的多维数组
- sql - 关于Oracle SQL的优化(分组)