151 messaggi dal 29 luglio 2010
Ciao a tutti ho una domanda da porvi: in pratica sul mio sito ho un modulo di registrazione che mi scrive i dati su di un database access. Ora la domanda è: come faccio ad aggiungere dei campi nuovi al modulo CreateUser il cui codice è quello che vi metto sotto?

Public Overrides Function CreateUser(ByVal username As String, ByVal password As String, ByVal email As String, ByVal passwordQuestion As String, ByVal passwordAnswer As String, ByVal isApproved As Boolean, ByVal providerUserKey As Object, ByRef status As System.Web.Security.MembershipCreateStatus) As System.Web.Security.MembershipUser
Dim conn As New OleDb.OleDbConnection(connStr)
'----perform checking all the relevant checks here
' and set the status of the error accordingly, e.g.:
'status = MembershipCreateStatus.InvalidPassword
'status = MembershipCreateStatus.InvalidAnswer
'status = MembershipCreateStatus.InvalidEmail

'---add the user to the database
Try
conn.Open()
Dim sql As String = "INSERT INTO Membership VALUES (" & _
"@username, @password, @email, " & _
" @passwordQuestion, @passwordAnswer )"
Dim comm As New OleDb.OleDbCommand(sql, conn)
comm.Parameters.AddWithValue("@username", username)
comm.Parameters.AddWithValue("@password", password)
comm.Parameters.AddWithValue("@email", email)
comm.Parameters.AddWithValue("@passwordQuestion", passwordQuestion)
comm.Parameters.AddWithValue("@passwordAnswer", passwordAnswer)
Dim result As Integer = comm.ExecuteNonQuery()
conn.Close()

status = MembershipCreateStatus.Success
Dim user As New MembershipUser("AccessMembershipProvider", username, Nothing, email, passwordQuestion, Nothing, True, False, Now, Nothing, Nothing, Nothing, Nothing)
Return user
Catch ex As Exception
'---failed; determine the reason why
status = MembershipCreateStatus.UserRejected
Return Nothing
End Try


End Function


Se provo ad aggiungere dei campi nuovi mi da errore...
Grazie per l'aiuto.
Sffortunatamente, MembershipProvider non è proprio quello che si definisce un "esempio di buon design" e il metodo (vogliamo proprio definirlo "Factory"?) "CreateUser" non fa eccezione.
Al seguente indirizzo ti viene spiegato come "agginare" queste carenze.
How to: Implement a Custom Membership User

Ovviamente, non risolvono il problema e ti costringono ad uno sforzo in termini di implementazione che è notevole (per quanto mi riguarda, inaccetabile).

Tutto questo, solo per sfruttare qualche controllo utente preconfezionato che, nella maggior parte dei casi, ti fa compiere salti mortali per la fase di customizzazione.

Il fatto è che a Microsoft, fino a poco tempo fa, erano convinti che potesse esistere un'entità "User" per tutte le stagioni. :-)

Nicola Baldi
"Make things as simple as possible, but not simpler."
>>> My blog <<<

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.