gpt4 book ai didi

c# - Intranet 站点的 ASP.NET Identity + Windows 身份验证

转载 作者:太空狗 更新时间:2023-10-29 17:56:13 25 4
gpt4 key购买 nike

我正在构建一个 Intranet 站点,用户将在公司域中并具有不同的权限级别。我目前正在使用 <authentication mode="Windows"/>来控制站点访问,但似乎我应该使用 ASP.NET Identity .

例如,假设我的应用程序是组织中每个部门的仪表板。我想创建一个名为 DashboardUsers 的广告组并将所有可以访问该站点的人都放在这个组中。

我还想限制仪表板中的 View 。例如,我只希望 IT 组看到他们的观点,而财务人员看到他们的观点,等等。

问题 -- 我是否应该使用 Windows 身份验证来控制对站点的访问,然后使用 ASP.NET Identity 来获得用户级别的权限?

最佳答案

我只使用 WindowsAuthentication 做过类似的事情。您可以使用授权属性标记您的操作:

[Authorize(Roles = @"DashboardUsers")]

只要此用户是 DashboardUsers AD 组的成员,他们就可以访问此操作。这看起来像是 MVC 魔术,但实际上就是这么简单。

不幸的是,这种方法不允许您为不同角色重载操作,因为授权属性不是方法签名的一部分。在您看来,您必须根据当前用户角色显示不同的 anchor 标记。

即:

[Authorize(Roles = @"DashboardUsers\Manager")]
public ActionResult IndexManagers()
{
..
}

[Authorize(Roles = @"DashboardUsers\Finance")]
public ActionResult IndexFinance()
{
..
}

评论后编辑:由于您的身份来自 AD,因此您可以在 Controller 中使用如下逻辑:

if(User.IsInRole("Finance"))
{
..
}
else if(User.IsInRole("IT"))
{
..
}

这也将检查他们属于哪个广告组。我知道这不是很优雅,但我无法想象将 Windows Auth 与自定义身份混合并在您自己的数据库中管理权限也会很优雅。

关于c# - Intranet 站点的 ASP.NET Identity + Windows 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23299920/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com