Лучший способ реализовать несколько ролей и полномочий в c# веб-приложении?

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

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

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

и так далее.

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

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

Я понимаю, что существует ограничение размера с cookie, о которых я должен знать. Независимо форма, что, это звучит выполнимым, есть ли как лучший способ сделать это?

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

1
задан user411810 5 August 2010 в 10:06
поделиться

2 ответа

На самом деле, если вы хотите запрограммировать все это самостоятельно на уровень 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

2
ответ дан 2 September 2019 в 22:25
поделиться

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

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

0
ответ дан 2 September 2019 в 22:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: