Права пользователя в виде битов в целом числе - PullRequest
1 голос
/ 21 августа 2010

Допустим, я храню целое число для каждого пользователя в базе данных, которое представляет назначенные ему разрешения. Сохраненное число представляет собой сумму степеней двух, связанных с каждым назначенным разрешением.

Какой самый простой способ проверить, было ли предоставлено определенное разрешение (в рамках VBScript / ASP или вообще)? Лучшая идея, которую я имею, - преобразовать целое число в двоичную строку и проверить желаемый бит, но я чувствую, что есть лучшее решение (и я чувствую себя виноватым, пока не осознав его).

1 Ответ

1 голос
/ 21 августа 2010
DIM ADMIN as Integer = 128

DIM UserPermissionCode as Intger

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

Это было всего лишь предположение о синтаксисе VB.NET. Вот правильная версия в C #

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

Permissions UserCode;

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