我正在尝试使用以下Custom Role Provider Tutorial在MVC5应用程序中实现自定义角色管理器。
我创建了自定义角色提供程序,覆盖了2个必需的函数。
namespace Models.Security
{
public class CustomRoleProvider : RoleProvider
{
/// logic
public override string[] GetRolesForUser(string username)
{
/// logic
public override bool IsUserInRole(string username, string roleName)
{
然后我需要更改我的网络配置以使用这个新的提供程序...
<system.web>
<compilation debug="true" targetFramework="4.5.2" />
<httpRuntime targetFramework="4.5.2" />
<roleManager enabled="true" defaultProvider="CustomRoleProvider">
<providers>
<clear />
<add name="CustomRoleProvider" type="Models.Security.CustomRoleProvider"/>
</providers>
</roleManager>
但是,当我尝试访问我的应用程序时,出现以下错误:
分析器错误消息:无法加载类型'Models.Security.CustomRoleProvider'。
Source Error:
Line 29: <providers>
Line 30: <clear />
Line 31: <add name="CustomRoleProvider" type="Models.Security.CustomRoleProvider"/>
Line 32: </providers>
Line 33: </roleManager>
据我所知,我已经完成了所需的一切。唯一不同的是我使用链接到AD的自定义成员资格
<authentication mode="Forms">
<forms name=".ADAuthCookie" loginUrl="~/Account/Login" timeout="200" slidingExpiration="false" protection="All" />
</authentication>
<membership defaultProvider="ADMembershipProvider">
<providers>
<clear />
<add name="ADMembershipProvider" type="System.Web.Security.ActiveDirectoryMembershipProvider" connectionStringName="ADConnectionString" attributeMapUsername="sAMAccountName" />
</providers>
</membership>
我还需要做些什么吗? MVC5改变了方法吗?
答案 0 :(得分:0)
是。 MVC 5使用Identity,角色提供程序是ASP.NET Membership概念。您不需要Identity中的角色提供程序,因为您控制角色。它是项目中的一个实体(或者至少可以是你的子类IdentityRole
),所以你可以做任何你想做的事。
答案 1 :(得分:0)
您仍然可以使用roleManager和自定义角色提供程序。只需将您的主体设置为RolePrincipal类型即可。您可以在IAuthenticationFilter上执行此操作并在global.asax上注册它。请参阅以下两个链接以获取示例代码: RolePrincipal / IAuthenticationFilter