2009-08-02 16 views
11

Mi chiedo come estendere la roba dei membri in asp.net?Come estendere l'appartenenza ad Asp.net?

Quando un utente esegue il login, desidero controllare UserName e Password. Ovviamente l'appartenenza standard a asp.net fa questo (questo è ValidateUser()).

Voglio anche controllare un altro campo chiamato "istituzione". Se un utente digita qualcosa in questa casella, voglio verificare se "institution", "userName" e "password" corrispondono a ciò che è nel database.

Se un utente lascia vuoto il campo "istituzione", voglio solo utilizzare il metodo ValidateUser() predefinito fornito in asp.net e controllare solo "userName" e "password".

Quindi è possibile sovraccaricare il metodo ValdiateUser()? O dovrò scrivere il mio per gestire questo nuovo caso?

Dove memorizzare questo campo "istituzione" nel database? Ho sentito parlare di persone che raccomandano il tavolo "Profilo" ma non ne sono sicuro.

Inoltre come posso cambiare l'appartenenza per il trattamento di questi come 3 diversi utenti

Istituzione: ABC UserName: A09410515 Password: 1234567

Istituzione: GHA UserName: A09410515 Password: 1234567

UserName: A09410515 Password: 1234567

Così come il mio database dovrebbe essere preoccupato che questi dovrebbero essere 3 utenti unici. Naturalmente nel caso in cui il mio database avesse già le stesse informazioni memorizzate in esso.

Ad esempio.

Istituzione: ABC UserName: A09410515 Password: 1234567

e qualcuno tenta di firmare con esattamente le stesse informazioni per "username" e "istituzione", allora sarebbe sputato di nuovo un errore di essere nomi duplicati.

risposta

15

Sì, è possibile create a custom membership provider. Il tuo provider implementerà MembershipProvider dandoti il ​​pieno controllo sulla creazione di un'interfaccia tra il sistema di appartenenza e lo schema del database esteso. Writing A Custom Membership Provider for your ASP.NET 2.0 Web Site è un esempio dettagliato.

+0

Ciao Grazie per i collegamenti. Sono ancora un po 'confuso però. Dove immagazzino questi campi extra che vorrei aggiungere. Come faccio ad aggiungerlo al profilo o cosa? Come se stessi facendo un fornitore personalizzato in modo che io possa unire il mio asp.net db e il mio db insieme, ma sto usando il server mssql. Inoltre ho notato che sostituiscono quei metodi. Voglio ancora utilizzare il metodo di verifica predefinito. Così faccio 2 metodi di sovraccarico. Uno con la mia verifica personalizzata e un metodo che chiama il metodo di verifica predefinito? – chobo2

2

Il modo pigro per farlo sarebbe quello di combinare insieme istituzione e nome utente per creare il nome utente effettivo.

Così avresti 3 nomi utente distinte: ABC & A09410515, GHA & A09410515 e & A09410515. Basta non consentire a un utente di utilizzare & in un nome utente.

Quindi, prima di creare l'utente o effettuare il login, è sufficiente combinare le due stringhe.

Non riesco a pensare dei problemi significativi che non possono essere risolti con un semplice trucco (ad esempio, la visualizzazione del nome utente (utilizzare username.split ('&') [1]), ma il post di JP è sicuramente il modo "giusto" per farlo.

James

1

è possibile utilizzare Nome applicazione come l'istituzione, in questo modo si avrebbe lo stesso nome utente in diverse applicazioni

Rodrigo.

Problemi correlati