Wpis z mikrobloga

Mirki,
Mam sobie zdefiniowany enum z atrybutem [Flags], który odwzorowuje prawa dostępu do poszczególnych obiektów przez danego Usera.
Uprawnienia są przechowywane w postaci maski 8-bitowej.
Do każdego z tych enumów mam zdefiniowany Display Name, dzięki któremu, z pomocą ASP.NET mogę ładnie wyświetlić uprawnienia usera do poszczególnego obiektu.
Problem pojawia się, gdy chcę przypisać użytkownikowi kilka praw, załóżmy prawa SELECT, oraz INSERT, wtedy powstaje mniej-więcej taka maska bitowa: 11000000. Przypisuje ją, wiadomo, za pomocą operatora bitowego OR. I teraz moje pytanie - czy przychodzi Wam do głowy jakiś sposób, dzięki któremu będę mógł wyświetlić nazwy tych "połączonych" uprawnień? Dla wyżej opisanej sytuacji - użytkownikowi powinno się wyświetlić uprawnienie SI. Nie chcę rozpisywać 256 osobnych przypadków. Może ktoś spotkał się z podobnym problemem i wie jak temu zaradzić?

#programowanie #dotnet #aspnet #csharp
ThatPart - Mirki, 
Mam sobie zdefiniowany enum z atrybutem [Flags], który odwzorowuj...

źródło: comment_rAmV22bV7471OsYYMu3veS7bxjZ9v8d9.jpg

Pobierz
  • 5
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@ThatPart: Albo przejście po wszystkich flagach i zrobienie logicznego ANDa z ich wartością liczbową. Jeśli wynik jest większy od 0 to flaga jest ustawiona i możesz dokleić jej nazwę do wynikowego stringa.
  • Odpowiedz