webForumDet fria alternativet

Designproblem SystemId eller Roles?

.NETur .NET

4 svar · 469 visningar · startad av Bjuris

Medlem sedan juli 2001514 inlägg
Frågan#1

Jag har en liten fundering med ett system som jag skall göra.
Förut så ha jag alltid använt mig av systemid som då är olika beroende vilken kund som använder systemet.
Nu funderar jag på att lösadet med olika roller istället.

Fördelar/Nackdelar?

En nackdel som jag ser det är att det kommer att innebära att det skapas en jäkla massa roller, samt fler roller per "system" beroende på vilka rättigheter användaren har.

Fördel är att jag slipper utöka asp:login

Hur har ni gjort?

Medlem sedan maj 20012 812 inlägg
#2

Ett rollbaserat system för rättigheter är att föredra, då man enkelt bara lägger till användaren till den roll som du vill att den skall ha rättighet för. Du bryr dig inte om vilka användare som finns när du bygger ditt system, utan bygger systemet mot rollerna och sedan placerar du användare i de roller som passar.

Att knytta sig så hårt som till specifika ID:en kör ditt system onödigt oflexibelt om du vill ändra rättigheter för någon användare.

Oftas så behöver det inte bli så många roller, det är inte många system som måste ha en specifik roll per funktion, utan man har kanske 4-5 olika roller som har olika rättigheter, typ: Admin, SuperUser, User, Reader, Och beroende på vilken roll som man får så får man göra olika saker. Men visst är det så att varje funktion kräver sin egen roll, så blir det en hel del roller som skall till, speciellt om du skall dela upp de på reader/writer rättigheter också.

- M

Medlem sedan juli 2001514 inlägg
#3

Jag tänkte mer så här:

KalleBanan har ett företag XXXX med ett par användare
NinaKanin har ett företag YYYY med ett par användare
osv
10 företag i inledningsfas - kommer förhoppningsvis bli fler.

Kallebanan vill ju inte att Lisakanins användare skall se hans "data".

Detta innbär ju att man först har en roll som särskiljer företagen åt som man använder för att spara data i dbn.
och sedan så har man ett par generella roller om vad användaren får göra.
typ (search, add, admin osv)

Medlem sedan maj 20012 812 inlägg
#4

Bjuris skrev:

KalleBanan har ett företag XXXX med ett par användare
NinaKanin har ett företag YYYY med ett par användare
osv
10 företag i inledningsfas - kommer förhoppningsvis bli fler.

Kallebanan vill ju inte att Lisakanins användare skall se hans "data".

Nej tro f-n att kallebanan inte vill att lisakanin skall kunna se hans företagsdata, och det är ju därför som du givetviss HAR OLIKA DATABASER för dessa företag. Det är en grundförutsättning för att skapa säkrasystem att man fysiskt särskiljer de olika företagens data åt. Att ha olika företagsdata i samma databas är verkligen en fet NO-NO.

Med det sagt, nu när du vet hur världen skall se ut, så skall jag berätta hur jag hade löst ditt problem om jag hade hamlat i den situationen. Jag skulle helt enkelt ha givet varje företag ett unikt ID (en guid) och sparat ner den tillsammans med datan i en egen kolumn. När en användare sedan hade efterfrågat data så hade jag skickat med den användarens företagsID och filtrerat ut datan med hjälp av det ID. På det sättet så slipper du speciella roller för varje företag.

Så du har helt enkelt de generella rollerna: Search, Add, Admin. Som kontrollerar om användare får göra det han vill, och när sedan data hämtas från databasen så lägger du bara till WHERE [CompanyID] = '500AB1A3-67F9-434b-BA76-1EF1156497C1' eller vad nu ID för företaget är.

- M

Medlem sedan juli 2001514 inlägg
#5

Men om man har olika databaser per kund så blir det inte dynamiskt.
Om man skall sätta upp en ny kund så måste man ju då skapa en ny db...

och så självklart så skall companyID vara en guid, men frågan är vart jag skall spara/hämta detta värde med hjälp av loginkontrollen.

145 ms totalt · 3 externa anrop · v20260731065814-full.55e59744
141 ms — hämta forumlista (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)