【发布时间】:2019-05-12 15:48:06
【问题描述】:
我正在使用 MVC 5 构建应用程序。在我的 web.config 中,我定义了一个自定义部分,用于向用户显示菜单。是这样的:
<Menus>
<Menu>
<MainMenu Title="Home"></MainMenu>
<SubMenus>
<SubMenu Title="Page1" PageName="home/index" ADGroup="BusinessUsers">
<SubMenu Title="Page2" PageName="home/index2" ADGroup="ITUsers">
</SubMenus>
</Menu>
<Menu>
<MainMenu Title="About Us"></MainMenu>
<SubMenus>
<SubMenu Title="Another Page1" PageName="about/mypage1" ADGroup="BusinessUsers">
<SubMenu Title="Some Other Page" PageName="about/mypage2" ADGroup="OtherUsers">
</SubMenus>
</Menu>
</Menus>
我正在使用 Windows 身份验证,每个人都可以通过 AD 组访问。默认情况下,我拒绝使用 web.config 中的授权规则访问所有用户,如下所示:
<authorization><deny users="*"/></authorization>
是否可以在运行时根据上面Application_Start中的MENU定义授权规则?比如:
Global.Filters.AuthorizeUser("BusinessUsers", "home/index, about/mypage1");
Global.Filters.AuthorizeUser("ITUsers", "home/index2");
【问题讨论】:
-
那在你的 web.config 中?你的代码在哪里把它从你的 web.config 中拉出来并放到你的视图中?这可能是您必须这样做的地方。
-
这就是我要问的,即如何在运行时授权用户。我需要在
Application_Start中编写的代码是什么,以根据<Menu>中定义的 AD 组授权各个用户 -
我在问一些不同的问题。暂时忘记授权。您如何从您的 web.config 中读取此内容并将其置于您的视图中?
-
如果您想在运行时进行细粒度授权,您需要研究一个框架,该框架可以在 .NET 甚至 XACML 或 ALFA 中执行基于声明的 AuthZ。
-
@GabrielLuci 我正在使用
ConfigurationSettings.GetConfig阅读菜单,然后循环浏览其中的所有记录。
标签: asp.net-mvc-5 active-directory asp.net-authorization role-base-authorization