Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Allgemeines (OffTopic) » simples Userrechtesystem

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
15.07.2005, 12:16 Uhr
mike
Pinguinhüpfer
(Operator)


Hallo!

Ich möchte mir ein Rechtesystem basteln:
#define usercan... 2
#define usercan... 4
#define usercan... 8
#define usercan... 16
#define usercan... 32

Nun will ich die Konstanten verbinden:
perms = usercan... | usercan...;

Mit if(perms & usercan...) kann ich überprüfen, ob der User eine bestimmte Aktion durchführen darf.

Meine Frage: Ist die Konstantenwahl (2,4,8,16,32,...) eindeutig bzw. sicher? Ist diese Methode sicher?

Danke im Voraus,
mfg
--
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
15.07.2005, 12:22 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)


Wenn ich mich gerade nicht schwer irre sollte das eindeutig sein, weil du ja durch die Addition deiner Konstanten niemals auf den Wert einer anderen Konstante kommst.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
15.07.2005, 12:42 Uhr
Tommix



Die 1 hast Du vergessen.
Über kurz oder lang wirst Du allerdings feststellen, daß Du genau 33 Userrechte benötigst.

- Gruß, Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
15.07.2005, 13:04 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


33?
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
15.07.2005, 13:14 Uhr
Tommix



Ja, 33. Vielleicht auch 65. Wir könnten den thread jetzt in die Rätselecke verschieben aber ich meine, daß ihm bei "#define usercan... 2 hoch irgendwas" irgendwann die begrenzte Bitbreite von perms auf die Füße fallen wird.

- Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
15.07.2005, 13:42 Uhr
ao

(Operator)



Zitat von Tommix:
... daß ihm bei "#define usercan... 2 hoch irgendwas" irgendwann die begrenzte Bitbreite von perms auf die Füße fallen wird.

Stimmt schon. Die Entscheidung, eine Userrechte-Verwaltung einzubauen, ist ne Grundsatzentscheidung für die gesamte Lebenszeit aller betroffenen Programme, und entsprechend sorgfältig sollte man diese Entscheidung treffen.

Es ist nicht grundsätzlich falsch, im ersten Ansatz Bitmasken zu verwenden; mit 32 voneinander unabhängigen Rechten kann man schon ganz schön weit kommen.

Schlecht ist aber, wenn man die Abfragen if (myrights & RIGHT_XY) überall im Code verstreut, sowas ist unpflegbar. Auf jeden Fall die Userrechte-Verwaltung so kapseln, dass im Clientcode nur über Schnittstellen abgefragt wird: if (MyPermissions.MayIDo (Permissions::XY)) und du die Implementierung von Permissions bei Bedarf austauschen kannst.

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
15.07.2005, 18:03 Uhr
mike
Pinguinhüpfer
(Operator)


Hi!

Danke für die zahlreichen Antworten. Vielleicht werde ich #define zur seite Schieben und mit const meine Rechte definieren.

Danke euch,
mfg
--
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ Allgemeines (OffTopic) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: