[英]Custom Role Manager / Provider
我正在嘗試使用以下“ 自定義角色提供程序教程”在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)
{
然后,我需要更改我的Web配置以使用此新提供程序...
<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是否改變了方法?
是。 MVC 5使用身份,角色提供者是ASP.NET成員資格的概念。 您無需在Identity中使用角色提供程序,因為您可以控制角色。 它是項目中的一個實體(或者如果是IdentityRole
子類,則至少是一個實體),因此您可以做任何您想做的事情。
您仍然可以使用roleManager和自定義角色提供程序。 只需將您的委托人設置為RolePrincipal。 您可以在IAuthenticationFilter上執行此操作,然后在global.asax上注冊它。 有關某些示例代碼,請參見這兩個鏈接: RolePrincipal / IAuthenticationFilter
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.