MySQLRoleProvider

时间:2012-03-11 03:00:40

标签: asp.net mysql asp.net-membership membership-provider

我正在使用MySQL Connector / .NET和自定义MySQL成员资格提供程序。

以下是web.config的一部分:

<roleManager enabled="true" defaultProvider="MySQLRoleProvider">
  <providers>
    <clear />
    <add applicationName="name" description=""
      connectionStringName="MySQLMP" writeExceptionsToEventLog="False"
      autogenerateschema="True" name="MySQLRoleProvider" type="MySql.Web.Security.MySQLRoleProvider, MySql.Web, Version=6.4.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
  </providers>
</roleManager>
<membership defaultProvider="MySQLMembershipProvider">
  <providers>
    <clear />
    <remove name="MySQLMembershipProvider" />
    <add name="MySQLMembershipProvider" type="MySql.Web.Security.MySQLMembershipProvider, MySql.Web, Version=6.4.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" applicationName="name" description="MySQL default application" connectionStringName="MySQLMP" writeExceptionsToEventLog="False" autogenerateschema="True" enablePasswordRetrieval="False" enablePasswordReset="True" requiresQuestionAndAnswer="True" requiresUniqueEmail="True" passwordFormat="Hashed" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" passwordStrengthRegularExpression="" />
  </providers>
</membership>
<profile defaultProvider="MySQLProfileProvider">
  <properties>
    <add name="AccountNumber" type="string" provider="" />
    <remove name="MySQLProfileProvider" />
    <add name="MySQLProfileProvider" type="MySql.Web.Profile.MySQLProfileProvider, MySql.Web, Version=6.4.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
  </properties>
  <providers>
    <clear />
    <add name="MySQLProfileProvider" connectionStringName="MySQLMP" applicationName="name" type="MySql.Web.Profile.MySQLProfileProvider, MySql.Web, Version=6.4.4.0, Culture=neutral, PublicKeyToken=C5687FC88969C44D" />
  </providers>
</profile>

除此之外,我使用的是ASP.NET身份验证表单。 我想要做的是:在用户登录后,我想检查他/她是否是管理员并重定向到某个页面。容易,对吧?

我相信,我应该使用以下内容:

if(Role.IsUserInRole(lgnCustomer.UserName, "Administrator"))
        lgnCustomer.DestinationPageUrl = "~/admin";

但是,出于某种原因我不能使用“角色”。它似乎缺少对MySQLRoleProvider的引用。

其他所有内容(用户注册,登录,角色区分)都有效......

提前谢谢!

1 个答案:

答案 0 :(得分:0)

答案并不像我想象的那么困难。 显然,成员资格提供程序不是默认SQL提供程序。我必须在开头使用using System.Web.Security;,而不是using MySQL.Web.Security;