1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/cpcx-good-manage

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Платформа

Good — это система управления правами доступа, разработанная на основе Spring Boot. Она представляет собой облегчённую систему для формирования собственной универсальной платформы разработки. Это позволяет сократить объём работы при последующих проектах и использовать платформу как основу для новых разработок.

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

Адрес доступа:

Демонстрационный адрес:

Задачи для завершения:

  1. Добавить правила шифрования с использованием соли (отложить).
  2. Реализовать инициализацию административных прав при запуске проекта (отложить).
  3. Автоматически распределять права администратора после добавления меню ресурсов (отложить).
  4. Внедрить управление кешем с помощью Spring Cache и поддержку сторонних кешей (отложить).

Основные функции:

  1. Права доступа: используется Shiro для гибкого контроля доступа к страницам и кнопкам, удовлетворяя большинство потребностей в управлении правами.
  2. База данных: применяется Druid для управления соединениями с базой данных, что позволяет контролировать производительность базы данных и оптимизировать SQL-запросы. Также поддерживается мультиплатформенная конфигурация для динамического переключения между средами разработки, тестирования и производства.
  3. Логирование: используется Logback для вывода логов. Мультиплатформенная настройка позволяет динамически переключаться между средами разработки, тестирования и производства, а также разделять логи по времени и размеру файла и архивировать их.
  4. Планирование задач: Spring+Quartz используется для распределённых задач планирования на базе базы данных. Задачи могут быть вызваны через HTTP или выполнены локально. Поддерживается динамическое добавление, удаление, изменение и приостановка задач, а также возможность немедленного выполнения и просмотра истории выполнения без необходимости перезапуска системы.
  5. Обработка исключений и проверка данных: встроенные механизмы обработки исключений и проверки данных.

Встроенные функции:

  1. Управление системой:
    • Управление пользователями (завершено).
    • Управление ролями (завершено).
    • Управление правами (завершено).
    • Организация (не завершено).
    • Словарь (не завершено).
    • Мониторинг SQL (завершено).
    • Онлайн-управление пользователями.
  2. Планирование (завершено).
  3. Управление контентом (не завершено).
  4. Логирование (завершено).

Среда разработки:

  • Intellij IDEA 2016.2
  • JDK 1.8
  • Maven 3.3.9
  • Tomcat 8.5
  • MySQL 5.7
  • Navicat for MySQL
  • Google Chrome

Выбор технологий:

Серверная часть:

  • Ядро фреймворка: Spring Boot 1.5.4
  • Фреймворк представления: Spring MVC 4.3.9
  • Безопасность: Apache Shiro 1.3.2
  • Планирование: Spring + Quartz 2.x
  • Постоянное хранилище: Mybatis 3.4.4 + универсальный Mapper 3.4.2
  • Проверка сервисов: Hibernate validator 5.3.5
  • Инструмент генерации API: Swagger2
  • Модульное тестирование: JUnit 4.12
  • Клиент сети: Spring RestTemplate (OKGO) + OKHttp
  • Почтовый клиент: Spring + JavaMail
  • Шаблонизатор: Thymeleaf 3.0.0
  • Пул соединений с базой данных: Alibaba Druid 1.1.0
  • Кеширование: Spring Cache + Ehcache 2.5.3
  • Логирование: SLF4J 1.7.22 + Logback 1.1.8
  • Пагинация: PageHelper 5.0.3
  • Инструменты: Apache Commons, Jackson 2.2, Lombok 1.16.14, Hutool 2.16.0, Feilong-core 1.10.5

Клиентская часть:

  • UI-фреймворк: H-UI 3.0
  • JS-фреймворк: jQuery 1.11.0
  • Валидация форм: Jquery-validation 1.14.0
  • Дерево: zTree v3
  • Пагинация: laypage 1.3
  • Всплывающие окна: layer 2.4
  • Редактор форматированного текста: UEditor 1.4.3
  • Загрузка файлов: WebUploader 0.1.5
  • Выбор даты: My97DatePicker 4.8
  • Графики: Echarts 3.4.0
  • Улучшение форм: iCheck 0.7

Функциональная демонстрация:

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

Особые указания:

Автор предупреждает о возможных ошибках и недостатках в системе и предлагает сообщать о них для совместного улучшения.

QQ-группа для общения:

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

Благодарности:

Упоминается благодарность проекту Hutool за предоставленные инструменты и библиотеке Feilong за поддержку. Feilong-core — это набор инструментов для разработчиков на Java, который призван упростить работу с большим количеством повторяющегося кода.

Mapper и Mybatis_PageHelper — инструменты для работы с MyBatis, популярным фреймворком для взаимодействия с базами данных в Java. Mapper упрощает работу с однотабличными операциями (CRUD), а Mybatis_PageHelper предоставляет плагин для удобной работы с пагинацией.

renren-security — система управления доступом, предназначенная для обеспечения безопасности в приложениях.

H-ui.admin — шаблон для создания административных интерфейсов на основе H-ui, библиотеки компонентов пользовательского интерфейса.

Обновление журнала

Плановые обновления

  1. Сеансовое управление:
    • управление сеансами онлайн-пользователей и доступ к их базовой информации; возможность принудительного выхода.
  2. Управление словарями.

24 сентября 2017 года

  1. Решена проблема, когда при использовании CronTrigger в качестве триггера Quartz выполнение задачи происходит сразу после вызова метода scheduler.rescheduleJob().
  2. Решена проблема с отсутствием обновления журнала выполнения при изменении выражения Cron.

7 сентября 2017 года

  1. Разрешена проблема автоматического внедрения Spring-контейнера в аннотированные bean-компоненты в рамках задач Quartz.

20 августа 2017 года

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

14 августа 2017 года

  1. Исправлена ошибка, из-за которой при выборе списка в процессе авторизации нельзя было выбрать только список.
    • При отмене всех дочерних узлов в zTree родительский узел не отменялся.

12 августа 2017 года

  1. Переработан дизайн страницы входа, активирован режим «гламур».
  2. Исправлен баг, связанный с автоматическим удалением пробелов в начале и конце строк.

9 августа 2017 года

  1. Проверка файлов на соответствие требованиям безопасности:
    • проверка расширения файла на допустимые значения;
    • проверка целостности файла по его заголовку для предотвращения несанкционированного доступа путём изменения расширения.

5 августа 2017 года

  1. Определён список приветственных страниц.
  2. Размещён внешний демонстрационный адрес: http://139.224.112.51:8082/admin/index.
    • Имя пользователя: test.
    • Пароль: test.
  3. Настроен Nginx для доступа к изображениям (см. файл конфигурации в группе).
  4. После изменения текущего пароля при выходе из системы информация о предыдущих сеансах остаётся доступной, что приводит к повторному запросу на вход.
    • Решение:
      • использование настраиваемого фильтра выхода;
      • дополнительная настройка выхода в бэкэнде (не реализовано).

1 августа 2017 года

  1. Структура пакета переработана и организована по модулям.
  2. Если пользователь уже вошёл в систему, перенаправление на страницу входа при попытке повторного входа.

31 июля 2017 года

  1. Интеграция Feilong-Core версии 1.10.5.
  2. Ограничение количества одновременных входов для одного аккаунта до одного, с возможностью блокировки предыдущего сеанса:
    • Ajax-запросы: предоставление выбора для повторного входа и последующего выхода с перенаправлением на страницу входа;
    • Традиционные запросы: после блокировки предыдущего сеанса происходит перенаправление на страницу входа с уведомлением о блокировке.
    • Добавлены фильтры входа и выхода для проверки наличия активных сеансов и предоставления соответствующих уведомлений, включая информацию об IP-адресе и времени последнего входа.
  3. Реализован настраиваемый фильтр выхода для очистки кэша.

20 июля 2017 года

  1. Исправление ошибок.
  2. Переработка роли и разделение прав доступа.
  3. Замена редактора форматированного текста на UEditor (в процессе). Удаление избыточных зависимостей из H-ui.
  4. Обновление Spring Boot до версии 1.5.4.
  5. Обновление MyBatis до версии 3.4.4, mapper-spring-boot-starter до версии 1.3.0, pagehelper-spring-boot-starter до версии 1.1.2.
  6. Обновление druid-spring-boot-starter до версии 1.1.2 (примечание: версия 1.1.1 не поддерживает конфигурацию ConfigFilter для шифрования паролей).
  7. Повторное конфигурирование и реализация функции загрузки файлов.

18 июля 2017 года

  1. Решение проблемы с немедленным вступлением в силу изменений ролей при назначении новых прав доступа, в настоящее время реализовано только для текущего пользователя. Для других пользователей изменения не вступают в силу немедленно (остаточная проблема).
  2. Удаление параметра JSESSIONID из адресной строки браузера.

14 июля 2017 года

  1. Устранена проблема невозможности привязки объектов при использовании универсальных мапперов с resultType.
  2. Исключена фильтрация двоичных файлов, устранена проблема с отображением шрифтов и иконок.

28 июня 2017 года

  1. Добавлен пример загрузки файлов и содержимого jar-пакетов при использовании SpringBoot для создания jar-файлов.

27 июня 2017 года

  1. Добавление druid-spring-boot-starter.
  2. Шифрование паролей базы данных.
  3. Детальная настройка Druid.

27 мая 2017 года

  1. Разделение исключений на категории:
    • Сервисный уровень генерирует определённые типы RuntimeException.
    • Контроллерный уровень генерирует исключения с кодом состояния.
    • Все исключения унифицируются и передаются клиенту.
  2. Повторная реализация проверки формы (включая проверку дублирования отправки и статуса токена после повторной отправки). Все исключения обрабатываются единообразно и передаются клиенту.
  3. Планируется отображение результатов проверки данных на стороне клиента (в разработке).

26 мая 2017 года

  1. Унификация обработки исключений и их классификация.
  2. Реализация проверки данных на сервере, поддержка группировки, сортировки, двухуровневой проверки (передней и задней) для обеспечения безопасности данных.

25 мая 2017 года

  1. Создание плагина для унифицированных сообщений об ошибках.
    • AJAX добавляет слой маскировки.
    • Улучшение пользовательского опыта.

24 мая 2017 года

  1. Настройка заголовков ответов для AJAX-операций, таких как отсутствие прав доступа, тайм-аут входа и повторная отправка форм, для единообразного отображения на клиентской стороне.

23 мая 2017 года

  1. Внедрение механизма предотвращения повторной отправки форм с использованием JavaScript и токенов на серверной части.
    • Для запросов AJAX, если проверка не пройдена (например, имя пользователя уже занято), после повторной отправки будет возвращён заголовок X-Refresh-Token-Form, который обновляет значение tokenForm во всех формах.
    • Из-за того, что сессии хранятся в памяти сервера, в кластерной среде невозможно гарантировать, что токен, созданный одним сервером, будет проверен другим сервером. Необходимо найти способ обмена данными между серверами.
      • Решение: использование Spring Session для совместного использования сессий или сохранение токенов в Redis.
    • В случае открытия нескольких окон для одной и той же функции (например, добавление пользователя) необходимо ограничить действия.
      • Предлагается использовать последнее открытое окно в качестве основного и предоставлять дружественные уведомления о завершении срока действия окна при повторном открытии.
    • С точки зрения безопасности можно установить срок действия для formToken. Например, можно использовать Redis для управления сроком действия или добавить временную метку в formToken для сравнения.
    • Передняя часть может глобально отключить кнопку отправки формы перед отправкой запроса AJAX, чтобы уменьшить нагрузку на сервер и автоматически активировать её после успешного ответа.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Good — это система управления правами доступа, разработанная на основе Spring Boot во время изучения Spring Boot автором. Её цель — создать универсальную среду разработки, принадлежащую автору, чтобы в будущем можно было сразу разрабатывать проекты на этой платформе и уменьшить объём повторяющейся работы. Система использует следующие фреймворки... Развернуть Свернуть
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/cpcx-good-manage.git
git@api.gitlife.ru:oschina-mirror/cpcx-good-manage.git
oschina-mirror
cpcx-good-manage
cpcx-good-manage
master