2010-08-20 5 views
1

Supposons que je stocke un entier pour chaque utilisateur dans une base de données qui représente les autorisations qui leur ont été attribuées. Le nombre stocké est la somme des puissances de deux associées à chaque permission attribuée.Autorisations utilisateur en tant que bits dans un entier

Quel est le moyen le plus simple de vérifier si une autorisation donnée a été accordée (dans VBScript/ASP, ou généralement)? La meilleure idée que j'ai est de convertir l'entier en une chaîne binaire et vérifier le bit que je veux, mais je sens qu'il ya une meilleure solution (et je me sens coupable de ne pas réaliser encore.)

Répondre

1
DIM ADMIN as Integer = 128 

DIM UserPermissionCode as Intger 

if (UserPermissionCode and ADMIN) = ADMIN Then 
    ' user is an admin 
endif 

qui a été à peu près juste une supposition à la syntaxe VB.NET. Voici une version correcte en C#

[Flags] 
enum Permissions 
{ 
    User = 0x01; 
    PowerUser = 0x02; 
    Admin = 0x80 
} 

Permissions UserCode; 

if (UserCode & Permissions.Admin == Permissions.Admin) 
{ 
    // user is admin 
}