Главная страница
Навигация по странице:

  • Интерфейс IRoleManager

  • Элементы класса Описание Методы

  • Интерфейс IRoleManagerSaver

  • Интерфейс IEntityRoleManager

  • Интерфейс IRolesRepository

  • Атрибут AFuncName

  • Элементы класса Описание Свойства

  • Реферат 1 Введение 3 Аналитическая часть 5


    Скачать 1.24 Mb.
    НазваниеРеферат 1 Введение 3 Аналитическая часть 5
    Дата11.03.2018
    Размер1.24 Mb.
    Формат файлаdocx
    Имя файлаdiplom_-_Copy_1_checked.docx
    ТипРеферат
    #38138
    страница15 из 16
    1   ...   8   9   10   11   12   13   14   15   16

    Разработка системы ролей и её интеграция с общей программной системой

    Реализация ядра системы ролей


    На основании описанной выше архитектуры приложения, в системе был реализован модуль системы управления ролями. Была реализована проверка доступа на уровне HTTP-запроса (фильтр) и предоставлены возможности удобной (в плане написания программного кода) проверки доступа из представлений модулей. Реализации самих проверок в представлениях – это задачи реализации соответствующих модулей системы.

    Платформа ASP.NET MVC предоставляет удобную систему событий, связанных с выполнением HTTP-запросов. В частности, для реализации фильтра ролевой системы рассмотрены методы обработки событий непосредственно перед выполнением соответствующего запросу действия контроллера.

    С помощью этой системы событий реализован специальный атрибут AFuncName. Атрибут (в C#) – это специальная возможность метаинформации в коде, предоставляющая какое-то поведение или какую-то характеристику декларативного характера соответствующему этому атрибуту элементу кода - классу, методу, свойству класса и т.д. Более того, реализаций такого атрибута удалось решить сразу 2 задачи: осуществление фильтра и задачу назначения методу специального абстрактного названия (как было описано в теоретической части).

    Также был реализован способ проверки доступа к функциям из представлений. Предполагается условное деление «активного» пользовательского интерфейса (т.е. тех элементов, которые непосредственно отвечают за переход по ссылкам) на одиночные элементы (кнопка) и на списки (например, блок меню). Реализованы эффективные возможности проверок и тех, и других.

    Реализация модуля администрирования ролями


    Для разработанной системы ролей предоставлен инструмент управлениями разрешениями. Этот инструмент является полноценным модулем автоматизированной системы обучения и контроля знаний. Модуль реализован в соответствии с MVC-паттерном и трёхслойной архитектурой приложения. Слои доступа к данным и бизнес-логики являются общими с реализованной системой ролей. Представления используют AngularJS для более удобного связывания моделей данных.

    Модуль состоит из трёх основных страниц: управление пользователями (добавление и удаление в группы), управление группами (добавление и удаление ролей группам), управление ролям (связывание с функциями).

    Также добавлена возможность добавления пользователя на этапе верификации заявки на регистрацию главным администратором автоматизированной системы обучения и контроля знаний.

    Скриншоты реализованного модуля представлены в приложении C.

    Классы


    В данном разделе приводится описание классов, реализующих систему ролей.

    Интерфейс IRoleManager

    Основной интерфейс бизнес-логики системы ролей.

    public interface IRoleManager

    Элементы класса

    Описание

    Методы

    bool HasFunc(string funcName);

    Проверяет доступ текущего пользователя к функции.

    bool HasFunc(string funcName, object entityId)

    Проверяет доступ текущего пользователя к функции на основании обрабатываемой в этой функции сущности.

    List GetEntityList(string funcName)

    Получение списка доступных пользователю сущностей в контексте заданной функции.




    bool HasAllFuncs(params string[] funcNames)

    Проверяет доступ текущего пользователя ко всем перечисленным функциям.




    List GetRoleList();

    Возвращает список всех ролей.




    List GetUserGroupList();

    Возвращает список всех групп пользователей




    List GetUserList();

    Возвращает список всех пользователей




    ObjectAndListModel GetEditRoleModel(int? id);

    Возвращает модель для редактирования роли




    ObjectAndListModel GetEditUserGroupModel(int? id);

    Возвращает модель для редактирования группы пользователей




    ObjectAndListModel GetEditUserModel(int id);

    Возвращает модель для редактирования привязки пользователя к группам




    IRoleManagerSaver Saver { get; }

    Возвращает реализацию модуля сохранения для модуля администрирования




    List GetAllowedFuncList();

    List GetAllowedFuncList(List from);

    Возвращает список доступных пользователю функций.
    Перегруженная версия выбирает их из заданного множества.

    Интерфейс IRoleManagerSaver

    Интерфейс сохранения информации о сделанных изменениях в системе ролей.

    public interface IRoleManager

    Элементы класса

    Описание

    Методы

    void SaveUserGroup(UserGroupModel role);

    Сохраняет изменения в выбранной группе пользователей.

    void SaveRole(RoleModel role);

    Сохраняет изменения в выбранной роли.




    void SaveUserGroupsForUser(int userId, List userGroupIds);

    Сохранения связи между пользователем и списком его групп.

    Интерфейс IEntityRoleManager

    Вспомогательный интерфейс, обрабатывает доступ к действию над сущностью.

    public interface IEntityRoleManager

    Элементы класса

    Описание

    Методы

    bool GoodIdType(Type type);

    Проверяет корректность типа сущности.

    bool CanDo(object entityId);

    Проверяет возможность действия к заданной сущности.




    List GetAvaliableList();

    Получение списка доступных пользователю сущностей.

    Интерфейс IRolesRepository

    Основной интерфейс доступа к данным системы ролей.

    public interface IRolesRepository

    Элементы класса

    Описание

    Методы

    public List GetFuncNamesForRoles(List roleIds)

    Получения списка идентификаторов функций для заданного списка идентификаторов ролей.

    public List GetRolesForUserGroups(List userGroupIds)

    Получения списка идентификаторов ролей для заданного списка идентификаторов групп пользователей.

    public List GetUserGroupsForUser(int userId)

    Получения списка идентификаторов групп пользователей для заданного идентификатора пользователя.




    public void AddFunctionToRole(int funcId, int roleId)

    Добавление функции к роли (через идентификаторы).




    public void AddRoleToUserGroup(int roleId, int userGroupId)

    Добавление роли к группе пользователей (через идентификаторы).




    public List GetRoles(List ids)

    Получение списка моделей ролей через идентификаторы ролей.




    public List GetFuncs(List ids)

    Получение списка моделей функций через идентификаторы функций.




    public void ClearFunctionInRoles(int roleId)

    Удаление всех функций от роли.




    public void AddUpdateRole(RoleModel role)

    Добавление новой или обновление уже существующей модели роли.




    public void UpdateCacheTable()

    Обновление кэша функций.




    public List GetUserGroups(List ids)

    Получение списка моделей групп пользователей через их идентификаторы.




    public void AddUpdateUserGroup(UserGroupModel group)

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

    public void ClearRolesInGroup(int id)

    Удаление всех связей с ролями в заданной группе пользователей.

    public List GetGroupIdsForUser(int id)

    Получения списка идентификаторов функций для заданного идентификатора пользователя.

    public void ClearGroupForUser(int id)

    Удаление всех связей с группами пользователей для заданного идентификатора пользователя.

    public void AddGroupToUser(int userId, int groupId)

    Добавление группы пользователю через идентификаторы.

    public void AddFunctions(List toAdd)

    Добавление моделей функций в базу данных.

    public List FindUserGroupByName(string name)

    Поиск группы пользователя по имени.




    public List GetFuncNamesForUserId(int userId)

    Получение списка названий функций для заданного идентификатора пользователя.

    Атрибут AFuncName

    Атрибут, используемый для пометки метода контроллера специальным именем и привязки метода обработки события (непосредственно перед вызовом помечаемого).

    public class AFuncName : ActionFilterAttribute

    Элементы класса

    Описание

    Свойства

    public string Name

    Хранит специальное имя функции (внутреннее представление для системы ролей).

    public string EntityId

    Хранит идентификатор сущности (опционально), с которой работает помечаемый метод (имя идентификатора в аргументах метода) .

    Методы

    public AFuncName(string funcName, string entityId = null)

    Конструктор. Аргументы явно указывает свойства Name и, опционально, EntityId.

    public override void OnActionExecuting(ActionExecutingContext filterContext)

    Осуществляет проверку досутпа перед вызовом помечаемого атрибутом метода.







    1   ...   8   9   10   11   12   13   14   15   16


    написать администратору сайта