Проблема
В ASP.NET отсутствует концепция привязки разрешений к ролям.
Мое приложение
В текущем веб-приложении используется пользовательское членствои поставщики ролей.Приложение имеет 4 роли: суперпользователь , администратор , руководитель и учитель .Когда пользователь входит в систему, он перенаправляется на соответствующий пользовательский интерфейс.Например, администраторы перенаправлены на интерфейс администратора, учителя перенаправлены на интерфейс учителя.Каждый интерфейс имеет свою главную страницу и страницы aspx.Новым требованием является то, что учителям больше не разрешается просматривать конкретную информацию или делать определенные функции.Информация может быть полем или строкой в элементе управления gridview, она также может быть функциональной (например, не может щелкнуть ссылку, чтобы открыть всплывающее окно, но при этом увидеть текст ссылки).Другие роли также нуждаются в особых требованиях «разрешений», но они полностью отличаются от требований учителей.
Предлагаемое решение
Создание таблицы базы данных для централизованного сопоставления permissionsToRoles, напримерИтак:
CREATE TABLE [dbo].[PermissionToRole](
[PermissionID] [int] IDENTITY(1,1) NOT NULL primary key,
[Role] int NOT NULL,
[Control] [varchar](50) NOT NULL,
[ControlType] [varchar](50) NOT NULL,
[Function] [varchar](50) NOT NULL,
[Read] [bit] NULL,
[Write] [bit] NULL,
[Execute] [bit] NULL,
[Delete] [bit] NULL
)
Используя приведенный выше пример ссылки, мы получили бы что-то вроде: "teacher", "labelName", "asp: label", "click", 1, 0, 0, 0(может прочитать ссылку, но не «выполнить» щелчок)
План состоит в том, чтобы иметь возможность сделать несколько вещей:
- Использование разрешений для объединения нескольких aspx илогика на одной странице (aspx).Чтобы каждый раз сокращать объем обслуживания, требуется новая роль.
- Управление на всех уровнях (вкладка -> управление) ролями разрешений «группы».Например, используйте эту таблицу для контроля видимости элементов управления на каждом уровне (вкладка, страница, элемент управления).А также отдельные функции (например, щелкните элемент управления ссылкой)
- Управляет тем, какие данные возвращаются в пользовательский интерфейс и какие операции CRUD разрешены.
Существуют ли рамкитам для ASP.NET, который уже может это сделать? Я почти уверен, что Content Management Systems (CMS) может сделать это, но это приложение не будет использовать CMS :).Я действительно хочу не изобретать велосипед.
Спасибо!