Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 角色在ActiveDirectoryMembershipProvider中不工作_C#_.net_Asp.net Mvc 5_Forms Authentication - Fatal编程技术网

C# 角色在ActiveDirectoryMembershipProvider中不工作

C# 角色在ActiveDirectoryMembershipProvider中不工作,c#,.net,asp.net-mvc-5,forms-authentication,C#,.net,Asp.net Mvc 5,Forms Authentication,我有一个使用forms auth和ActiveDirectoryMembershipProvider的网站。我在控制器中有如下操作: [Authorize(Roles = "jira-developers")] [HttpGet] public ActionResult MonitorForm() { var list = Dal.GetActualData(); return View(list);

我有一个使用forms auth和ActiveDirectoryMembershipProvider的网站。我在控制器中有如下操作:

[Authorize(Roles = "jira-developers")]
        [HttpGet]
        public ActionResult MonitorForm()
        {
            var list = Dal.GetActualData();
            return View(list);
        }
<system.web>
<authentication mode="Forms">
  <forms name=".ADAuthCookie" loginUrl="~/Account/Login" timeout="45" slidingExpiration="false" protection="All" />
</authentication>
<membership defaultProvider="ADMembershipProvider">
  <providers>
    <clear />
    <add name="ADMembershipProvider"
         type="System.Web.Security.ActiveDirectoryMembershipProvider"
         connectionStringName="ADConnectionString"
         attributeMapUsername="sAMAccountName" />
  </providers>
</membership>
<roleManager enabled="true" defaultProvider="AdRoleProvider">
  <providers>
    <clear/>
    <add name="AdRoleProvider" type="InternalAutomation.Providers.AdRoleProvider"/>
  </providers>
</roleManager>
<compilation debug="true" targetFramework="4.5.1" />
<httpRuntime targetFramework="4.5.1" />
我完全确定我的用户和Name=“jira developers”在一起,但是auth失败了。如果删除Roles参数,身份验证将正常工作


我做错了什么?我将非常感激任何帮助

您的角色表中是否定义了角色?(根据您使用的版本,表的名称可能与下面的屏幕截图略有不同)

你应该有一个“RoleName”为“jira开发者”的条目。
点击操作的用户在“…UsersInRoles”表中也应该有一个条目

因为没有人给我答案,所以我会自己回答这个问题。ActiveDirectoryMembershipProvider只能处理身份验证,为了启用角色管理,我必须指定RoleManager。我实现了自己的RoleProvider(因为我需要一些特定的功能),现在我的Web.Config如下所示:

[Authorize(Roles = "jira-developers")]
        [HttpGet]
        public ActionResult MonitorForm()
        {
            var list = Dal.GetActualData();
            return View(list);
        }
<system.web>
<authentication mode="Forms">
  <forms name=".ADAuthCookie" loginUrl="~/Account/Login" timeout="45" slidingExpiration="false" protection="All" />
</authentication>
<membership defaultProvider="ADMembershipProvider">
  <providers>
    <clear />
    <add name="ADMembershipProvider"
         type="System.Web.Security.ActiveDirectoryMembershipProvider"
         connectionStringName="ADConnectionString"
         attributeMapUsername="sAMAccountName" />
  </providers>
</membership>
<roleManager enabled="true" defaultProvider="AdRoleProvider">
  <providers>
    <clear/>
    <add name="AdRoleProvider" type="InternalAutomation.Providers.AdRoleProvider"/>
  </providers>
</roleManager>
<compilation debug="true" targetFramework="4.5.1" />
<httpRuntime targetFramework="4.5.1" />


你指的是什么桌子?我想使用Active directory用户和组作为角色。您也可以在此处列出自定义角色提供程序