Avatar billede neoman Novice
22. april 2007 - 13:30 Der er 7 kommentarer og
1 løsning

Membership provider, unikke brugere og samme DB/kode for grupper

Jeg ønsker at have flere applikationer som kan køre med samme brugere og i den forbindelse har jeg brug for hints til at kunne genbruge samme brugers UserID i forskellige applikationer.JEg er uerfaren på området, så bær venligst over med dumme spørgsmål.

A. Flere applikationer for samme bruger.

Jeg har kigget lidt i membership provideren.  I tabellen aspnet_Users er der for hver user en UserID (PK) og godt nok også en  Application_ID (aldeles IKKE PK) . For Roles er der også en Application_ID for hver rolle (men udgør ikke del af konbineret PK). Aspnet_Profiles kun har UserID (som PK) - og det er da fint nok, siden man kan lave grupper af profiler, hvor hver profil gruppe kunne være møntet på en specifik applikation.


Eftersom UserID er en PK, og dermed unik, så tyder det på, at der for hver applikation skal etableres nye UserID - selv om jeg kunne ønske, at samme bruger kunne få adgang til flere applikationer. Hvis Application_ID  og USer_ID var en kombineret indeks, så kunen man jo genbruge samme USerID i forskellige applikationer (med applikationsspecifikke Roles).

1. Findes der en option/parameter et eller andet sted til at etablere ovenstående ?
2. Eller, skal man selv modificere provideren for at få det ?
3. Eller, findes der en hel anden måde at opnå mit ønske ?

Jeg er ude efter noget i stil med Yahoo/MSN Groups, hvor man tilmelder sig hver særskilt gruppe, og derinde kan man etablere, og få tilskrevet, forskellige roller til den samme bruger.


B. Genbruge samme kode og DB for forskellige grupper

Jeg ved at DOTNETNUKE kan lave noget i den stil (og MSN/Yahoo osv gør det jo vel også), men inden jeg kaster mig over reverse engineering af DOTNETNUKE , ville jeg høre om der er nogen der har nogle praktiske hints. Specifikt, hvordan tager  man hensyn til at jeg ønsker kun at have et sæt kode, men lade forskellige grupper bruge den uafhængigt af hinanden. Jeg er i gang med at lave en applikation og er på et stade hvor jeg skal forberede datastrukturen i DB'en til at kunne blive brugt af forskellige grupper.

    a. Ville man lave adgangskontrol på rækkeniveau i DB'en ?
    b. Ville man f.eks. tilføje GruppeID til alle DB-rækker ?
    c. Kan den eksisterende membership provider udnyttes - eller skal den udvides ?

Alle bidrag er velkomne - jeg håber på nogle hints og  links så jeg selv kan komme videre på en fornuftig måde.
Avatar billede neoman Novice
22. april 2007 - 14:43 #1
Og som altid, efter timers forgæves søgen , så begynder man at finde hints på nettet til dele af ens spørgsmål - det kræver åbenabart at man blot skal skrive spørgsmålet her på eksperten ! :-)
Nu har jeg fundet en ret brugbar artikel, som viser at authentication kan gælde for mange applikationer -Forms Authentication Across Applications :  http://msdn2.microsoft.com/en-us/library/eb0zx8fc.aspx

Nu gælder det blot om at fidne ud af , hvordan det gøres i praksis med forskelloige roller per applikation
Avatar billede neoman Novice
22. april 2007 - 15:00 #2
..and the story continues :

en teknik for at bruge samme DB for flere grupper er at lave ny tabeller for hver gruppe som f.eks. _gruppenavn_Tabel1, _gruppenavn_Tabel2 osv
Det er vel mere sikkert, men jeg kan ikke forestille mig at skulle ende op med hundredevis af tabeller, så  er der en anden løsning som er både praktisk og rimeligt sikker ?
Avatar billede snepnet Nybegynder
22. april 2007 - 18:48 #3
Du kan bare angive et applicationname når du konfigurerer din provider, og benytte det samme applicationname for flere applikationer.
Du kan se detaljer her:
http://weblogs.asp.net/scottgu/archive/2006/04/22/Always-set-the-_2200_applicationName_2200_-property-when-configuring-ASP.NET-2.0-Membership-and-other-Providers.aspx
Mvh
Avatar billede neoman Novice
22. april 2007 - 19:42 #4
tak snepnet- god artikel. Og hvis jeg anvender samme applicationname for flere applikationer, hvordan kan jeg så få forskellige roller for applikationer ?
Hvis jeg kører en mødekalender applikation, og samtidig en helpdesk applikation, så vil der i disse være ret forskellige roller, selv om brugerskaren  er den samme. User.IsInRole("blah") fungerer, så vidt jeg har forstået, på den måde, at den udfra den kørende aplikations  applicationname ved, hvilket sæt af roller den skal kigge i. Hvordan kan jeg have ET sæt af brugere til begge applikationer, men med applikationsafhængige roller ?Kan man fortælle den et applicationname for bruger ID's og en anden (et eller andet sted) for rolle-definitionerne ?
Avatar billede snepnet Nybegynder
23. april 2007 - 10:03 #5
Du kan konfigurere at rollerne er i en applikationsspecifik database, men at brugerene er i den samme. Hvis du benytter profiles, kunne det også tænkes at de var applikationsspecifikke.
Mvh
Avatar billede snepnet Nybegynder
23. april 2007 - 10:05 #6
Membership, Roles og Profiles er helt adskildt... Du kan f.eks. have dine brugere i asp.net databasen, dine roller i en tekstfil, og trække profiles fra en webservice - hvis du skulle have lyst til det.
Mvh
Avatar billede neoman Novice
26. april 2007 - 17:38 #7
OK - nu har jeg fundet ud af at web.config er hierarkisk - dvs hvis jeg definererer en MembershipProvider i roden, så bliver den samme provider nedarvet, indtil jeg lægger noget andet i en lokal web.config.  Det var bare ret uklart fra docs at det var den måde man skulle gøre på.

Jeg vil lukke dette her spørgsmål - så læg et svar. Selv om jeg ikke har fået svar på alt så pyt med det - nu skinner solen jo:)
Avatar billede snepnet Nybegynder
26. april 2007 - 18:56 #8
Jamen det siger vi da bare :o)
Mvh
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester