Tags:
asp.net
Hej udviklere
Jeg har et simpelt spørgsmål - hvorfor bruger man MembershipProvideren i .net? Hvorfor laver man sin en 'custom' MembershipProvider frem for at bare lave brugerhåndteringen selv?
Hvad er fordelene ved det, og hvad er ulemperne?
Du får samme fordele af at benytte membershipprovideren som du får af at benytte ethvert andet færdigt komponent om vi så end taler kontroller som textbox og gridview eller tredjeparts-ting som fx ckeditor eller tinymce; et færdigtestet og køreklart produkt, der er lynhurtigt at implementere og med masser af features. Med membershipprovideren slipper man fx for at tænke på SQL Injection (noget som rigtig mange udviklere stadigvæk glemmer) og du får alt serveret omkring login, glemt password, opret og rediger bruger, rollestyring osv - noget som ellers potentielt set kan tage en god del tid at lave fra bunden første gang.
Grunden til at man så vil gå ind og modificere membershipprovideren fremfor at lave brugerhåndteringen fra bunden selv vil ofte være, at store dele af provideren indeholder hvad man har behov for men pånær behovet for ekstra felter til selve brugeren, fx adresse, postnr, by, køn osv, som ikke er indbygget som standard. Her kan det, i hvert fald i nogle situationer, spare tid at omskrive enkelte metoder men beholde al den øvrige funktionalitet.
Så kort opsummeret, kan det spare tid, give sikkerhed samt flere features end man selv kunne overkomme uden videre at skrive. Ulemperne kan være, at provideren og ikke mindst tabelstrukturen kan være unødigt kompleks samt at modellen ikke passer ind i ens domainmodel (mener den kører med GUID hvor dit krav måske er selv at kunne styre de unikke nøgler og så er det heller ikke muligt at ændre brugernavn (i hvert fald uden custom kode)).
Så basicly er der ikke andre fordele end at du får en masse ting foræret ved at bruge den. Det er nemmere for andre udviklere som har arbejdet med det før at sætte sig ind i din kode fordi der er en generel måde det hele så virker på. Har du lavet din custom MembershipProvider kan den genbruges et utal af gange på en masse sites du udvikler - virker den så virker den. Det kan så extendes med fx. en ProfileProvider til at lagere specifik data om brugeren.
Man kan så vælge at bruge asp.nets controls (login, createuserwizard, osv.) eller lave sin egne usercontrols der så benytter sig af MembershipProvideren.
@Kim - tak for svaret.