Geek-Framework: микросервисная платформа для быстрой разработки
Geek-Framework — это микросервисный фреймворк для быстрой разработки, основанный на нескольких открытых проектах. Он обеспечивает высокую эффективность, производительность и безопасность благодаря интеграции передовых технологий.
Geek-Framework построен на базе Spring Boot и предлагает следующие возможности:
- MVC в качестве модели представления контроллера;
- MyBatis для доступа к данным;
- Apache Shiro и Spring Security для авторизации;
- Redis для кэширования.
Geek-Framework ориентирован на разработку микроприложений и включает базовые функции для управления пользователями, ролями, правами доступа, участниками и журналами событий. На стороне клиента реализованы основные функции, такие как регистрация и вход в систему.
Фреймворк также поддерживает разделение таблиц для пользователей и администраторов, что позволяет расширять функциональность системы. В нём используются многоуровневая архитектура, двойная проверка подлинности, кодирование данных и шифрование паролей. Управление проектами осуществляется с помощью Maven для повышения удобства разработки и расширяемости.
Обновления
В обновлениях фреймворка были внесены следующие изменения:
- Обновление SpringBoot до версии 2.1.2.RELEASE и добавление конфигурации в application.yml для совместимости с последней версией SpringBoot.
- Удаление поддержки J2Cache для упрощения настройки системы новыми пользователями.
- Объединение всех пользователей в одну область вместо поддержки нескольких областей.
- Оптимизация инструментов даты и времени для обеспечения безопасности.
- Исправление предупреждений в соответствии с правилами разработки Java.
- Добавление переключателя отладки для вывода журналов.
- Интеграция с протоколом RPC (Remote Procedure Call Protocol) для удалённого вызова процедур.
- Улучшение обработки ошибок при использовании SpringTransaction.
- Обновление пакетов MyBatis, mapper и pagehelper для автоматической конфигурации.
- Изменение способа обработки сортировки после обновления pagehelper.
- Добавление примеров тестирования транзакций.
- Обновление J2cache до версии 2.7.0 для исправления ошибок и возможного будущего удаления поддержки Jedis.
- Настройка Lettuce в качестве альтернативы Jedis для Redis.
- Внедрение компонентов загрузки файлов и редактора на основе UEditor.
- Решение проблемы одновременного входа в систему на разных браузерах.
- Использование Spring-Security для контроля входа на стороне клиента и сохранение Shiro для административной части.
- Обновление базы данных для использования нового механизма паролей BCryptPasswordEncoder.
- Оптимизация структуры каталогов и резервное копирование базы данных.
- Исправление ошибок в pom-файле и файлах конфигурации J2Cache.
- Переименование проекта из SpringBootAdmin в Geek-Framework.
- Обновление до SpringBoot 2.0 и интеграция J2Cache в качестве вторичного кэша.
- Создание ветки 1.0 для сохранения кода предыдущей версии.
- Реализация JWT для аутентификации и авторизации.
- Интеграция Redis для хранения данных и использование Shiro с RedisSession для кластерных сред.
- Введение режима по умолчанию «разработка».
- Устранение известных проблем и ошибок.
Функции
Платформа предоставляет следующие встроенные функции:
- управление администраторами для настройки системы и распределения ролей;
- управление ролями для определения прав доступа;
- управление меню для настройки системных меню, операций и кнопок;
- управление участниками для регистрации и управления пользователями на передней панели;
- ведение журнала операций для записи и поиска нормальных операций системы;
- ведение журнала исключений для записи и поиска аномальных событий системы.
Технические решения
Для обеспечения работы платформы используются следующие технологии:
-
Серверная часть:
- ядро: SpringBoot 2.0.2.RELEASE;
- сервер приложений: Tomcat 8.5.31;
- безопасность: Apache Shiro 1.4 и Spring-Security 5.0.5;
- представление: Spring MVC 5.0.6;
- проверка: Hibernate Validator 6.0.9;
- макет: Thymeleaf 3.0.9;
- постоянство: MyBatis 3.3.1 и Mapper 3.3.9;
- пул соединений: Alibaba Druid 1.0;
- кэш: Ehcache 3, Redis и J2Cache 2.13;
- логирование: Log4j;
- токены: jsonwebtoken 0.6;
- инструменты: Apache Commons и Jackson 2.9.5.
-
Клиентская часть:
- jQuery 2.2.4;
- совместимость jQuery: jQuery-Migrate 1.4.1;
- CSS: Twitter Bootstrap 3.3.7+AdminLte 2.3.7;
- клиентская проверка: jQuery Validate Plugin 1.15;
- таблицы данных: BootStrap-Table 1.11;
- древовидные списки: jQuery-Treegrid 0.2 и BootStrap-Treeview 1.2;
- инструменты: Layer 3.0.
-
Платформа:
- поддержка серверов: проект по умолчанию совместим с Tomcat 8.5, но может быть упакован и развёрнут на существующих серверах Tomcat после специальной обработки;
- база данных: поддержка MySQL, планируется расширение для других баз данных;
- среда разработки: Java 1.8 и выше, IDEA, Maven 3.1, Git.
-
Безопасность:
- язык разработки: Java для обеспечения универсальности, эффективности, переносимости и безопасности;
- другие аспекты: не ограничиваясь языком, платформа обеспечивает высокий уровень безопасности благодаря использованию передовых технологий и методов. Многоуровневая архитектура: (база данных, уровень доступа к данным, бизнес-логика, презентация) — чёткая иерархия, слабая связанность, каждый уровень должен проходить через интерфейс для подключения и проверки параметров (например, на уровне презентации нельзя напрямую работать с базой данных), что обеспечивает безопасность операций с данными.
-
Двойная верификация: пользовательские формы проходят двойную проверку: серверную и клиентскую, чтобы предотвратить злонамеренные изменения со стороны пользователя (например, невозможность записи в текстовую область, скрытие переменных для подделки, загрузка незаконных файлов и т. д.), а также обход клиентской проверки и прямое взаимодействие с базой данных.
-
Безопасное кодирование: все данные, отправляемые через пользовательские формы, подвергаются безопасному кодированию на сервере, предотвращая отправку вредоносных скриптов и SQL-инъекций для получения конфиденциальной информации, обеспечивая тем самым защиту данных.
-
Шифрование паролей: пароли пользователей при входе в систему подвергаются хешированию с использованием алгоритма SHA1, который является необратимым. Это гарантирует безопасность в случае утечки зашифрованных данных.
-
Принудительный доступ: система проверяет права доступа всех пользователей, пытающихся получить доступ к административным функциям, предотвращая прямой ввод URL-адресов для доступа.
Функциональный обзор
Изображения и значки:
-
icon — изображение или значок, не удалось определить конкретный тип файла.
Информация об учётных записях
-
Учётная запись администратора на бэкенде: пароль — admin.
-
Учётная запись гостя на фронтенде: пароль — hao123.
Примечание: тестовая база данных периодически восстанавливается.
Быстрый старт
-
Необходимые условия: JDK 1.8+, Maven 3.0+, MySql 5+.
-
Настройка параметров базы данных: изменение файлов src/main/resources/application.properties, application-dev.properties и application-pro.properties.
-
Создание учётных записей MySQL: создание соответствующих пользователей и параметров в базе данных на основе изменённых настроек.
-
Сборка проекта: запуск команды mvn package для создания jar-файла проекта. Также можно запустить java -jar *.jar для локального предварительного просмотра.
-
Импорт данных: использование файла data/geekcattle.sql для импорта данных в локальную базу данных.
-
Доступ к учётной записи администратора: имя пользователя — admin, пароль — admin.
Общение, обратная связь и участие
Для обсуждения и обмена информацией рекомендуется присоединиться к QQ-группе 805442966 и ответить «GeekFramework». Также доступны ресурсы на GitHub и Open Source China.
Заявление о правах
Программное обеспечение использует лицензию Apache License 2.0. Необходимо строго соблюдать условия лицензии, включая предоставление копии лицензии пользователям, указание изменений в модифицированных файлах, сохранение лицензии и авторских прав в производных работах, включение уведомления о лицензии в продукты, содержащие исходный код, и возможность коммерческого использования и модификации кода.
Также разрешается перепродажа программного обеспечения с сохранением авторских прав и информации об авторах.
Комментарии ( 0 )