Umbraco覆盖或扩展默认成员资格提供程序

Umbraco覆盖或扩展默认成员资格提供程序,umbraco,Umbraco,我想使用Umbraco 6.1.6中的其他提供商,例如,我有这个 <membership defaultProvider="UmbracoMembershipProvider" userIsOnlineTimeWindow="15"> <providers> <clear /> <add name="UmbracoMembershipProvider" type="umbraco.providers.membe

我想使用Umbraco 6.1.6中的其他提供商,例如,我有这个

    <membership defaultProvider="UmbracoMembershipProvider" userIsOnlineTimeWindow="15">
      <providers>
        <clear />
    <add name="UmbracoMembershipProvider" type="umbraco.providers.members.UmbracoMembershipProvider" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" defaultMemberTypeAlias="Website" passwordFormat="Hashed" umbracoApprovePropertyTypeAlias="isActive" umbracoLastLoginPropertyTypeAlias="loginDate" />
        <add name="UsersMembershipProvider" type="umbraco.providers.UsersMembershipProvider" enablePasswordRetrieval="false" enablePasswordReset="false" requiresQuestionAndAnswer="false" />
      </providers>
    </membership>

但我想用这个

<membership defaultProvider="TechBureauMembershipProvider" userIsOnlineTimeWindow="15">
      <providers>
        <clear/>
        <add name="TechBureauMembershipProvider" type="TechBureau.Web.providers.TechBureauMembershipProvider" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" defaultMemberTypeAlias="Website" passwordFormat="Hashed" umbracoApprovePropertyTypeAlias="isActive" umbracoLastLoginPropertyTypeAlias="loginDate"/>
        <add name="UsersMembershipProvider" type="umbraco.providers.UsersMembershipProvider" enablePasswordRetrieval="false" enablePasswordReset="false" requiresQuestionAndAnswer="false"/>
      </providers>
    </membership>

因为我想覆盖ResetPassword密码函数,不做任何事情

public class TechBureauMembershipProvider : UmbracoMembershipProvider
{
    /// <summary>
    /// Overriding this so that it does nothing, reseting a password to a random password isn't cool for anyone.
    /// </summary>
    /// <param name="username"></param>
    /// <param name="answer"></param>
    /// <returns></returns>
    public override string ResetPassword(string username, string answer)
    {
        return string.Empty; //base.ResetPassword(username, answer);
    }
}
公共类TechBureauMembershipProvider:UmbracoMembershipProvider
{
/// 
///将密码重置为随机密码对任何人来说都不酷。
/// 
/// 
/// 
/// 
公共重写字符串重置密码(字符串用户名、字符串应答)
{
返回string.Empty;//base.ResetPassword(用户名、答案);
}
}
但问题是,如果我这样做,则不会加载“成员”选项卡。

我认为“umbraco.cms\businesslogic\member\member.cs”文件将提供者名称硬编码为:

public静态只读字符串UmbracoMemberProviderName=“UmbracoMembershipProvider”


因此,您可能必须使用反射覆盖函数。

David的方法是正确的,但我认为这里不需要反射覆盖。 更改
UmbracoMembershipProvider的类型,但名称保持不变

        <membership defaultProvider="TechBureauMembershipProvider" userIsOnlineTimeWindow="2880">
        <providers>
            <clear/>
            <add name="UmbracoMembershipProvider" type="TechBureau.Web.providers.TechBureauMembershipProvider" enablePasswordRetrieval="false" enablePasswordReset="false" requiresQuestionAndAnswer="false" defaultMemberTypeAlias="Member" passwordFormat="Hashed"/>
            <add name="UsersMembershipProvider" type="umbraco.providers.UsersMembershipProvider" enablePasswordRetrieval="false" enablePasswordReset="false" requiresQuestionAndAnswer="false" passwordFormat="Hashed"/>


啊,对了,现在这很有道理,我会试试看,谢谢!不,请看另一个答案,请保持相同的名称。