我有一个使用表单auth和ActiveDirectoryMembershipProvider的网站。我在这样的控制器中有一个Action:
[Authorize(Roles = "jira-developers")]
[HttpGet]
public ActionResult MonitorForm()
{
var list = Dal.GetActualData();
return View(list);
}
我完全确定我的用户与Name =" jira-developers"在一起,但是auth失败了。如果我删除Roles参数,auth将正常工作。
我做错了什么?我会感激任何帮助!
答案 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)
您是否拥有角色表中定义的角色? (根据您使用该表的版本,可能会命名与我在下面的屏幕截图略有不同)
你应该有一个带有&#39; RoleName&#39;的条目。 &#34; jira-developers&#34;。 用户点击操作也应该在&#39; ... UsersInRoles&#39;中有一个条目。表。