Question

I want to use a different provider in Umbraco 6.1.6, e.g. I have this

    <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>

but I want to use this

<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>

Because I want to override the ResetPassword password function to not do anything.

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);
    }
}

But the problem is the Members tab doesn't load if I do this.

Was it helpful?

Solution

David is on the right path but I don't believe reflection overwrite is necessary here. Change the type of UmbracoMembershipProvider but leave the name the same.

        <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"/>

OTHER TIPS

I think the "umbraco.cms\businesslogic\member\Member.cs" file hardcodes the provider name to:

public static readonly string UmbracoMemberProviderName = "UmbracoMembershipProvider";

So you might have to override the function using reflection.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top