0

我需要设置此 MVC 应用程序以使用 Windows 身份验证和 Outlook 电子邮件组为用户分配角色,然后我可以授权这些角色中的用户能够在控制器中执行特定操作。

我四处搜索,发现了一些关于角色如何与 MVC 一起使用以及如何将角色提供程序类用于许多基于角色的操作的非常有用的信息。但是,这些角色来自 SQL 数据库,并且不使用 Outlook 电子邮件组和 Windows 身份验证来授权用户。

我特别想了解如何利用 Outlook 电子邮件组,但无法轻松找到此信息。谁能帮我?

 <authentication mode="Windows">
</authentication>
<authorization>
  <deny users="?" />
  <allow users="?" />
  <allow roles="HAH\Domain Users"/>
  <deny users="*" />
</authorization>
<roleManager enabled="true" defaultProvider="AspNetWindowsTokenRoleProvider">
  <providers>
    <clear />
    <add
        name="AspNetWindowsTokenRoleProvider"
        type="System.Web.Security.WindowsTokenRoleProvider"
        applicationName="/" />
  </providers>
</roleManager>
4

1 回答 1

2

如果您将 Active Directory 中的组作为Exchange 分发列表,则可以使用任何使用 Windows 身份验证的 MVC 示例。

甚至为此还有一个 Visual Studio 模板。创建一个新的 MVC Web 应用程序,然后选择 Intranet Application。

更新

您的 web.config 存在一些问题。您应该只指定一个拒绝元素和一个允许元素:

<authorization>
  <deny users="?" />
  <allow roles="HAH\Domain Users"/>
</authorization>

这将拒绝所有未经授权的用户并允许域用户。请注意,MVC 遵循[Authorize]属性中定义的角色。我相信该属性将覆盖 web.config 设置。

在您的控制器中,您可以为整个控制器类或特定操作方法指定角色。

[Authorize(Roles = "Group 1, Group 2, Group3")]
public class MyController { }

或者

public class MyController
{
  [Authorize(Roles = "Group 1, Group 2, Group3")]
  public ActionResult MyAction()
  {
     return View();
  }
}
于 2012-04-23T16:56:37.780 回答