0 Tage Serie
csharp / expert
Snippet

Bitweise Berechtigungsmaskierung für Zugriffskontrolle

Für Hochleistungs-Sicherheitssysteme ermöglicht die Verwendung bitweiser Operationen auf Enums mit dem [Flags]-Attribut eine extrem schnelle Berechtigungsprüfung und speichereffiziente Speicherung komplexer Zugriffsrechte.

snippet.cs
csharp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[Flags]
enum Permissions : uint {
None = 0,
Read = 1 << 0,
Write = 1 << 1,
Delete = 1 << 2,
Admin = Read | Write | Delete
}
public static class SecurityManager {
public static bool HasAccess(Permissions userPerms, Permissions required) =>
(userPerms & required) == required;
public static Permissions Revoke(Permissions current, Permissions toRemove) =>
current & ~toRemove;
}
Erklärung
1
1 << 1
Verwendet den Linksshift-Operator, um jeder Berechtigungsstufe eindeutige Bitpositionen zuzuweisen.
2
current & ~toRemove
Kombiniert bitweises UND mit bitweisem NICHT (Komplement), um spezifische Bits chirurgisch aus der Maske zu entfernen.