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 

Share this post: | | | |
Published Monday, April 21, 2008 2:13 PM by cipto
Filed under:

Comments

No Comments