Лучший способ реализовать несколько ролей и разрешений в веб-приложении c #? - PullRequest
1 голос
/ 05 августа 2010

Я хочу реализовать роли и разрешения в веб-приложении, которое мы создали, и я рассматриваю использование System.Web.Security.SqlRoleProvider для реализации этого.Моя проблема в том, что каждый клиент захочет настроить, кто может и не может выполнять действия в системе, и никакие два клиента не захотят того же самого, поэтому создание основных ролей «Администратор», «Пользователь» и «Менеджер» для всех будет недостаточным.

Для каждого экрана я предлагаю создать роли следующим образом:

Screen1Create, Screen1Update, Screen1Delete, Screen1Read
Screen2Create, Screen2Update, Screen2Delete, Screen2Read

и т. Д.

Затем я бы позволил клиенту выбирать роли для каждого пользователя,который будет сохранен в файле cookie, когда пользователь входит в систему.

Я мог бы затем прочитать файл cookie и использовать user.isinrole, чтобы проверить, может ли каждый метод вызываться текущим пользователем.

IЯ понимаю, что с файлами cookie есть ограничение по размеру.Помимо того, что это звучит выполнимо, есть ли лучший способ сделать это?

Большое спасибо за любой вклад.

Ответы [ 2 ]

2 голосов
/ 05 августа 2010

Действительно, если вы хотите запрограммировать все это на уровень cookie, вы рискуете открыть дыры в безопасности. Это можно сделать с помощью проверки подлинности форм в сочетании с авторизацией на основе ролей. Asp.net предоставит пользователю cookie-файл с защитой от взлома.

Если вы реализуете роли, вы можете легко пометить методы:

 [PrincipalPermission(SecurityAction.Demand, Role="Screen1Create")]

или используйте код, чтобы увидеть, играет ли кто-то определенную роль.

много информации: http://weblogs.asp.net/scottgu/archive/2006/02/24/ASP.NET-2.0-Membership_2C00_-Roles_2C00_-Forms-Authentication_2C00_-and-Security-Resources-.aspx

0 голосов
/ 05 августа 2010

Помните, что файлы cookie - это вводимые пользователем данные, поэтому, если вы собираетесь хранить привилегии пользователей в файлах cookie, необходимо использовать хеш-функцию с ключом (например, HMAC-SHA256), чтобы убедиться, что пользователи не предоставляют себядополнительные разрешения.

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

...