角色在ActiveDirectoryMembershipProvider中不起作用

时间:2014-08-26 14:49:48

标签: c# .net asp.net-mvc-5 forms-authentication

我有一个使用表单auth和ActiveDirectoryMembershipProvider的网站。我在这样的控制器中有一个Action:

[Authorize(Roles = "jira-developers")]
        [HttpGet]
        public ActionResult MonitorForm()
        {
            var list = Dal.GetActualData();
            return View(list);
        }

我完全确定我的用户与Name =" jira-developers"在一起,但是auth失败了。如果我删除Roles参数,auth将正常工作。

我做错了什么?我会感激任何帮助!

2 个答案:

答案 0 :(得分:1)

由于没有人给我答案我会自己回答这个问题。 ActiveDirectoryMembershipProvider只能处理身份验证并启用角色管理我必须指定rolesManager。我实现了自己的RoleProvider(因为我需要一些特定的功能),现在我的Web.Config看起来像这样:

<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" />

答案 1 :(得分:0)

您是否拥有角​​色表中定义的角色? (根据您使用该表的版本,可能会命名与我在下面的屏幕截图略有不同)

Roles in Database Table

你应该有一个带有&#39; RoleName&#39;的条目。 &#34; jira-developers&#34;。 用户点击操作也应该在&#39; ... UsersInRoles&#39;中有一个条目。表。