PostgreSqlmembership provider dan Postgresqlroleprovider
Hi,
Perhaps u are one of person who meets the same case like me.
We want to provide membersip but the DB is on Postgre how to do it?
We create our own provider by inherit the Membershiprovider and roleprovider respectively.
we override the necessary function
Did i get it from other person? Yes, but i change abit cause there's some issue
private MembershipUser GetUserFromReader(NpgsqlDataReader reader)
{
object providerUserKey = reader.HasRows? new Guid(reader.GetValue(0).ToString()) : new Guid();
string username = reader.HasRows ? reader.GetString(1) : "";
string email = reader.HasRows ? reader.GetString(2) : "" ;
string passwordQuestion = reader.HasRows ? reader.GetString(3) : "" ;
string comment = reader.HasRows ? reader.GetString(4) : "" ;
bool isApproved = reader.HasRows ? reader.GetBoolean(5) :false ;
bool isLockedOut = reader.HasRows ? reader.GetBoolean(6):false ;
DateTime creationDate = reader.HasRows ? reader.GetDateTime(7):DateTime.Now ;
DateTime lastLoginDate = reader.HasRows ? reader.GetDateTime(8):DateTime.Now ;
DateTime lastActivityDate = reader.HasRows ? reader.GetDateTime(9) :DateTime.Now ;
DateTime lastPasswordChangedDate = reader.HasRows ? reader.GetDateTime(10) :DateTime.Now ;
DateTime lastLockedOutDate = reader.HasRows ? reader.GetDateTime(11): DateTime.Now ;
return new MembershipUser(
this.Name,
username,
providerUserKey,
email,
passwordQuestion,
comment,
isApproved,
isLockedOut,
creationDate,
lastLoginDate,
lastActivityDate,
lastPasswordChangedDate,
lastLockedOutDate
);
}
private bool validatePassword(string password, string dbpassword, string salt)
{
switch (PasswordFormat)
{
case MembershipPasswordFormat.Encrypted:
return password == UnEncodePassword(dbpassword);
case MembershipPasswordFormat.Hashed:
return dbpassword == encodePassword(password, salt);
case MembershipPasswordFormat.Clear:
return password == dbpassword;
default:
return false;
}
}
on web.config
add
<connectionStrings>
<add name="postgresqlConnString" connectionString="DATABASE=postgres;SERVER=localhost;PORT=5432;UID=cipto;Password=200382"/>
</connectionStrings>
<authentication mode="Forms">
<!--<forms loginUrl="~/login.aspx" defaultUrl="~/Default.aspx" name=".ASPXFORMSAUTH"/>-->
</authentication>
<roleManager defaultProvider="PostgreSqlRoleProvider" enabled="true" cacheRolesInCookie="true" cookieName=".ASPROLES" cookieTimeout="30" cookiePath="/" cookieRequireSSL="false" cookieSlidingExpiration="true" cookieProtection="All">
<providers>
<clear/>
<add name="PostgreSqlRoleProvider" connectionStringName="postgresqlConnString" applicationName="YOURAPPNAME" type="Andri.Web.PostgreSqlRoleProvider"/>
</providers>
</roleManager>
<membership defaultProvider="PostgreSqlMembershipProvider">
<providers>
<clear/>
<add connectionStringName="postgresqlConnString" applicationName="YOURAPPNAME" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="true" requiresUniqueEmail="true" passwordFormat="Clear" name="PostgreSqlMembershipProvider" encryptionKey="AB56FE8EA700B42A" type="Andri.Web.PostgreSqlMembershipProvider"/>
</providers>
</membership>under the configuration tag.
Postgremembership.zip