Getting attributs for membership provider from web.config

N

news.microsoft.com

How can get the values of for example RequiresUniqueEmail from my own
membershipprovider? Using is
System.Web.Security.Membership.RequiresQuestionAndAnswer; is not an option
because it will call the property from the membership provider.

<membership userIsOnlineTimeWindow="15"
defaultProvider="MembershipProviderSample">
<providers>
<add name="MembershipProviderSample"
type="SecurityProviders.MembershipProviderSample" EnablePasswordReset="true"
EnablePasswordRetrieval="true" MaxInvalidPasswordAttempts="5"
MinRequiredNonAlphanumericCharacters="0"
MinRequiredPasswordLength="6"
MembershipPasswordFormat="Clear"
RequiresQuestionAndAnswer="true"
RequiresUniqueEmail="true"
PasswordStrengthRegularExpression="[0-9a-zA-Z]{6,12}$"/>
</providers>
</membership>
 
D

Dominick Baier [DevelopMentor]

Hello news.microsoft.com,

the source looks like this (in the Membership class)

public static bool RequiresQuestionAndAnswer
{
get
{
Membership.Initialize();
return Membership.Provider.RequiresQuestionAndAnswer;
}
}

Initialize loads the configured default provider and assigns the instance
to the Provider property. So - they read the value from the currently loaded
provider implementation - which is your custom provider. You are responsible
in your provider to implement a Initialize method and read the values from
the NameValueCollection (to populate the properties).

so - your scenario should work.

you have to closely follow all the design pattern by microsoft - read more
here:
http://msdn.microsoft.com/asp.net/beta2/providers/default.aspx
 
R

Roel Veldhuizen

There is no Membership.Initialize(); atleast not in asp.net 2 but i found a
function Initialize in System.Web.Security.Membership.Provider. The
parameter string name is clear thats te provider name but the other
parameter is what i don't understand.
public virtual void Initialize (
string name,
NameValueCollection config
)"Dominick Baier said:
Hello news.microsoft.com,

the source looks like this (in the Membership class)

public static bool RequiresQuestionAndAnswer
{
get
{
Membership.Initialize();
return Membership.Provider.RequiresQuestionAndAnswer;
}
}

Initialize loads the configured default provider and assigns the instance
to the Provider property. So - they read the value from the currently
loaded provider implementation - which is your custom provider. You are
responsible in your provider to implement a Initialize method and read the
values from the NameValueCollection (to populate the properties).

so - your scenario should work.

you have to closely follow all the design pattern by microsoft - read more
here:
http://msdn.microsoft.com/asp.net/beta2/providers/default.aspx

---------------------------------------
Dominick Baier - DevelopMentor
http://www.leastprivilege.com
How can get the values of for example RequiresUniqueEmail from my own
membershipprovider? Using is
System.Web.Security.Membership.RequiresQuestionAndAnswer; is not an
option because it will call the property from the membership provider.

<membership userIsOnlineTimeWindow="15"
defaultProvider="MembershipProviderSample">
<providers>
<add name="MembershipProviderSample"
type="SecurityProviders.MembershipProviderSample"
EnablePasswordReset="true"
EnablePasswordRetrieval="true" MaxInvalidPasswordAttempts="5"
MinRequiredNonAlphanumericCharacters="0"
MinRequiredPasswordLength="6"
MembershipPasswordFormat="Clear"
RequiresQuestionAndAnswer="true"
RequiresUniqueEmail="true"
PasswordStrengthRegularExpression="[0-9a-zA-Z]{6,12}$"/>
</providers>
</membership>
 
D

Dominick Baier [DevelopMentor]

Hello Roel,

the Initialize method is private in the Membership class

You have to implement the Initialize method in your MembershipProvider derived
class.

The NameValueCollection holds the configuration values from the <membership>
element in web.config, e.g. "RequiresQuestionAndAnwer=true" - you have to
parse the collection to set the internal state in your class and the properties.

as i said - take the time to read the whitepapers i gave you the link to
- without completely understanding the architecture, you won't have much
fun with your provider.
there you will also find the source code of the depracated Access provider
as a template.

---------------------------------------
Dominick Baier - DevelopMentor
http://www.leastprivilege.com
There is no Membership.Initialize(); atleast not in asp.net 2 but i
found a
function Initialize in System.Web.Security.Membership.Provider. The
parameter string name is clear thats te provider name but the other
parameter is what i don't understand.
public virtual void Initialize (
string name,
NameValueCollection config
)"Dominick Baier [DevelopMentor]"
<[email protected]>
wrote in message
Hello news.microsoft.com,

the source looks like this (in the Membership class)

public static bool RequiresQuestionAndAnswer
{
get
{
Membership.Initialize();
return Membership.Provider.RequiresQuestionAndAnswer;
}
}
Initialize loads the configured default provider and assigns the
instance to the Provider property. So - they read the value from the
currently loaded provider implementation - which is your custom
provider. You are responsible in your provider to implement a
Initialize method and read the values from the NameValueCollection
(to populate the properties).

so - your scenario should work.

you have to closely follow all the design pattern by microsoft - read
more
here:
http://msdn.microsoft.com/asp.net/beta2/providers/default.aspx
---------------------------------------
Dominick Baier - DevelopMentor
http://www.leastprivilege.com
How can get the values of for example RequiresUniqueEmail from my
own membershipprovider? Using is
System.Web.Security.Membership.RequiresQuestionAndAnswer; is not an
option because it will call the property from the membership
provider.

<membership userIsOnlineTimeWindow="15"
defaultProvider="MembershipProviderSample">
<providers>
<add name="MembershipProviderSample"
type="SecurityProviders.MembershipProviderSample"
EnablePasswordReset="true"
EnablePasswordRetrieval="true" MaxInvalidPasswordAttempts="5"
MinRequiredNonAlphanumericCharacters="0"
MinRequiredPasswordLength="6"
MembershipPasswordFormat="Clear"
RequiresQuestionAndAnswer="true"
RequiresUniqueEmail="true"
PasswordStrengthRegularExpression="[0-9a-zA-Z]{6,12}$"/>
</providers>
</membership>
 
R

Roel Veldhuizen

When rewritting Initialze you stil need to get that namevaluecollection. If
i have the namevaluecollection i can fix it. But how do i get the
namevaluecollection from the web.config?
I tried to us the ConfigurationManager but that didn't work.

Dominick Baier said:
Hello Roel,

the Initialize method is private in the Membership class

You have to implement the Initialize method in your MembershipProvider
derived class.

The NameValueCollection holds the configuration values from the
<membership> element in web.config, e.g. "RequiresQuestionAndAnwer=true" -
you have to parse the collection to set the internal state in your class
and the properties.

as i said - take the time to read the whitepapers i gave you the link to -
without completely understanding the architecture, you won't have much fun
with your provider.
there you will also find the source code of the depracated Access provider
as a template.

---------------------------------------
Dominick Baier - DevelopMentor
http://www.leastprivilege.com
There is no Membership.Initialize(); atleast not in asp.net 2 but i
found a
function Initialize in System.Web.Security.Membership.Provider. The
parameter string name is clear thats te provider name but the other
parameter is what i don't understand.
public virtual void Initialize (
string name,
NameValueCollection config
)"Dominick Baier [DevelopMentor]"
<[email protected]>
wrote in message
Hello news.microsoft.com,

the source looks like this (in the Membership class)

public static bool RequiresQuestionAndAnswer
{
get
{
Membership.Initialize();
return Membership.Provider.RequiresQuestionAndAnswer;
}
}
Initialize loads the configured default provider and assigns the
instance to the Provider property. So - they read the value from the
currently loaded provider implementation - which is your custom
provider. You are responsible in your provider to implement a
Initialize method and read the values from the NameValueCollection
(to populate the properties).

so - your scenario should work.

you have to closely follow all the design pattern by microsoft - read
more
here:
http://msdn.microsoft.com/asp.net/beta2/providers/default.aspx
---------------------------------------
Dominick Baier - DevelopMentor
http://www.leastprivilege.com
How can get the values of for example RequiresUniqueEmail from my
own membershipprovider? Using is
System.Web.Security.Membership.RequiresQuestionAndAnswer; is not an
option because it will call the property from the membership
provider.

<membership userIsOnlineTimeWindow="15"
defaultProvider="MembershipProviderSample">
<providers>
<add name="MembershipProviderSample"
type="SecurityProviders.MembershipProviderSample"
EnablePasswordReset="true"
EnablePasswordRetrieval="true" MaxInvalidPasswordAttempts="5"
MinRequiredNonAlphanumericCharacters="0"
MinRequiredPasswordLength="6"
MembershipPasswordFormat="Clear"
RequiresQuestionAndAnswer="true"
RequiresUniqueEmail="true"
PasswordStrengthRegularExpression="[0-9a-zA-Z]{6,12}$"/>
</providers>
</membership>
 
R

Roel Veldhuizen

I solved the problem
Roel Veldhuizen said:
When rewritting Initialze you stil need to get that namevaluecollection.
If i have the namevaluecollection i can fix it. But how do i get the
namevaluecollection from the web.config?
I tried to us the ConfigurationManager but that didn't work.

Dominick Baier said:
Hello Roel,

the Initialize method is private in the Membership class

You have to implement the Initialize method in your MembershipProvider
derived class.

The NameValueCollection holds the configuration values from the
<membership> element in web.config, e.g.
"RequiresQuestionAndAnwer=true" - you have to parse the collection to set
the internal state in your class and the properties.

as i said - take the time to read the whitepapers i gave you the link
to - without completely understanding the architecture, you won't have
much fun with your provider.
there you will also find the source code of the depracated Access
provider as a template.

---------------------------------------
Dominick Baier - DevelopMentor
http://www.leastprivilege.com
There is no Membership.Initialize(); atleast not in asp.net 2 but i
found a
function Initialize in System.Web.Security.Membership.Provider. The
parameter string name is clear thats te provider name but the other
parameter is what i don't understand.
public virtual void Initialize (
string name,
NameValueCollection config
)"Dominick Baier [DevelopMentor]"
<[email protected]>
wrote in message

Hello news.microsoft.com,

the source looks like this (in the Membership class)

public static bool RequiresQuestionAndAnswer
{
get
{
Membership.Initialize();
return Membership.Provider.RequiresQuestionAndAnswer;
}
}
Initialize loads the configured default provider and assigns the
instance to the Provider property. So - they read the value from the
currently loaded provider implementation - which is your custom
provider. You are responsible in your provider to implement a
Initialize method and read the values from the NameValueCollection
(to populate the properties).

so - your scenario should work.

you have to closely follow all the design pattern by microsoft - read
more
here:
http://msdn.microsoft.com/asp.net/beta2/providers/default.aspx
---------------------------------------
Dominick Baier - DevelopMentor
http://www.leastprivilege.com
How can get the values of for example RequiresUniqueEmail from my
own membershipprovider? Using is
System.Web.Security.Membership.RequiresQuestionAndAnswer; is not an
option because it will call the property from the membership
provider.

<membership userIsOnlineTimeWindow="15"
defaultProvider="MembershipProviderSample">
<providers>
<add name="MembershipProviderSample"
type="SecurityProviders.MembershipProviderSample"
EnablePasswordReset="true"
EnablePasswordRetrieval="true" MaxInvalidPasswordAttempts="5"
MinRequiredNonAlphanumericCharacters="0"
MinRequiredPasswordLength="6"
MembershipPasswordFormat="Clear"
RequiresQuestionAndAnswer="true"
RequiresUniqueEmail="true"
PasswordStrengthRegularExpression="[0-9a-zA-Z]{6,12}$"/>
</providers>
</membership>
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,769
Messages
2,569,576
Members
45,054
Latest member
LucyCarper

Latest Threads

Top