簡體   English   中英

自定義角色管理器/提供程序

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM