Настраиваемая пользователем безопасность на мультитенантном веб-сайте ASP.NET - PullRequest
3 голосов
/ 07 октября 2008

Мы создаем мультитенантный веб-сайт в ASP.NET, и мы должны позволить каждому клиенту настроить собственную модель безопасности. Они должны иметь возможность определять свои собственные роли и ставить пользователей в эти роли. Каков наилучший способ сделать это?

Существует множество простых примеров событий page_load, которые имеют такой код:

  if (!user.InGroup("Admin")
       Response.Redirect("/NoAccess.aspx");

Но это жестко кодирует группы и разрешения в коде. Как я могу сделать это настраиваемым пользователем?

Ответы [ 2 ]

4 голосов
/ 07 октября 2008

Возможно, поместите настраиваемые роли в таблицу БД, где вы храните роли и владельца, а затем PagePermissions в другой таблице, например:

Table "Role"
RoleId, TenantId, Role

Table "PagePermissions"
PageId, RoleId

Table "UserRoles"
UserId, RoleId

Затем в загрузке страницы проверьте, есть ли у пользователя RoleId, который имеет разрешения для этой страницы, например:

Select PageId FROM 
UserRoles UR INNER JOIN PagePermissions PP
ON UR.RoleId = PP.RoleID
WHERE UR.Userid = @UserId AND PP.PageID = @PageId

Если не возвращено ни одной строки, отказать пользователю.

0 голосов
/ 07 октября 2008

Я бы создал систему конфигурации для сайта, которой легко управлять в config-файлах. Где вы могли бы набрать членов и использовать как это.

foreach(var group in ThisPageConfiguration.AcceptedRoleNames)
if (user.IsInRole(group))
...

Каждый клиент может затем настроить свой сайт в своих файлах конфигурации ... И все остальные типы вещей, которые вы хотите настроить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...