C# 角色在ActiveDirectoryMembershipProvider中不工作
我有一个使用forms auth和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);
[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用户和组作为角色。您也可以在此处列出自定义角色提供程序