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

OSCHINA-MIRROR/jiaton-classroomsweb

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

usthe

  • usthe является фронтендом системы управления правами доступа для беспредметных URL-ресурсов, основанной на angular+typescript+adminlte. Взаимодействует с серверной частью bootshiro.
  • Отличается от обычных решений возможностью конфигурирования страниц и динамического управления безопасностью RESTful API.
  • Данные передаются с использованием динамически генерируемых ключей шифрования, реализован механизм автоматической переавторизации JWT при истечении срока действия, а также мониторинг действий пользователя для усиления безопасности приложения.

Использование и некоторые соглашения

--------------- После того как вы завершили разработку api на серверной стороне, вам потребуется добавить его в конфигурацию API на фронтенде (в разделе "Ресурсная конфигурация -> Управление API") с использованием стиля совпадения ant (по соглашению, незаконченные API не защищены).

  • Пример: получение списка связанных пользователей для роли rest-url равно /role/user/{roleId}/{currentPage}/{pageSize}, метод доступа — GET. Вам следует добавить новый api в виде /role/user/*/*/* с методом доступа GET.
  • Соглашение о совпадении url представляет собой цепочку url="..." url+"=="+httpMethod.
  • После добавления нового api на страницу, вам потребуется настроить его для авторизованных ролей, меню, связанных пользователей и других ресурсов в разделе "Ресурсная конфигурация -> Управление ролями" (по соглашению, api, авторизованный для роли auth_anon, может быть доступен всем пользователям; обратите внимание, что незащищённые api могут быть доступны любому пользователю).
  • Авторизованные меню хранятся в sessionStorage после первого входа в систему для предотвращения повторного получения. Для просмотра изменений в меню после изменения ролей вам потребуется закрыть и заново открыть страницу (или очистить sessionStorage для автоматического обновления).Группа для обучения и общения QQ: 482621971

Основные архитектурные решения проекта:

Общий вид:

image1


Фронтенд usthe

Основан на angular5 + angular-cli + typescript + rxjs + bootstrap + adminlte, следуя лучшим практикам Angular.

Процесс создания включает использование node.js и webpack, но я не очень знаком с этими технологиями...

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

Основана на springboot + apache shiro + mybatis, использует стиль RESTful API, имеет собственные коды состояния, JSON-web-token, библиотеку подключения к базе данных Druid, генерацию документации Swagger, Redis для хранения refresh token и динамических ключей, Maven, одностороннее шифрование MD5 и двустороннее AES и т.д.

Шлюз nginx

Этот nginx используется как прокси-сервер для решения проблем с кросс-доменной политикой и заголовком реального IP (в настоящее время серверная часть поддерживает функцию кросс-доменного доступа, поэтому Nginx не требуется). Другой Nginx используется как сервер для приложения Angular, Tomcat — для Bootshiro сервера.

Конфигурационный файл reverse-proxy nginx.conf находится здесь: conf

Непрерывная интеграция

Процесс выглядит так:

image2

Детальное описание технологии реализации можно найти в этой статье: docker-обучение## Связанные документы


  1. Установка Nginx (не обязательно)
  • Здесь используется установка Nginx через Docker nginx-docker
  • Клонировать вышеупомянутый репозиторий nginx-docker локально: git clone https://gitee.com/tomsun28/DockerFile.git
  • Войти в директорию nginx и изменить параметры в файле nginx.conf для проксируемых адресов backend bootshiro и frontend
  • Войти в директорию nginx и создать образ Nginx: docker build -t nginx:1.0 .
  • Запустить Nginx: docker run -d -p 80:80 --name nginx nginx:1.0
  1. Запуск IDE для отладки
  • Fork проекта в свой репозиторий (добро пожаловать к star^.^)
  • Клонировать проект локально: git clone https://gitee.com/yourName/usthe.git
  • Импортировать проект в WebStorm
  • Необходима среда Node.js
  • Установите Angular CLI: npm install -g @angular/cli@latest
  • Войти в директорию проекта и выполнить команду: npm install
  • Измените параметр apiBaseUrl в файле /src/environments/environments.ts на адрес сервера backend
  • Если используете Nginx как прокси (apiBaseUrl — это адрес Nginx, соглашение nginx-url+'/api/' указывает на корневую URL backend проекта, которую можно изменить в nginx.conf)
  • Запустить проект: ng serve
  • Предполагается, что backend bootshiro уже запущен
  • Откройте браузер и перейдите по адресу: http://localhost:4200

Это локальная среда разработки, которая может работать без Nginx, но для продакшна лучше всё же использовать его

  1. Локальное развертывание с использованием Docker- Создайте форк проекта в вашем репозитории (ваши звезды приветствуются ^. ^)
  • Клонируйте проект локально: git clone https://gitee.com/yourName/usthe.git

  • Измените параметр apiBaseUrl в файле /src/environments/environments.prod.ts

  • Выполните команду для создания образа Docker: docker build -t usthe:1.0 .

  • Проверьте наличие созданного образа: docker images

  • Запустите контейнер: docker run -d -p 4300:4200 --name haiLady usthe:1.0

  • Проверьте запущенный контейнер: docker ps

  • Предполагается, что backend bootshiro уже запущен

  • Откройте браузер и перейдите по адресу: http://localhost:4300. Jenkins + Docker для непрерывной интеграции и непрерывной доставки CI/CD

  • Создайте форк проекта в вашем репозитории (ваши звезды приветствуются ^. ^)

  • Клонируйте проект локально: git clone https://gitee.com/yourName/usthe.git

  • Измените базовый URL API для среды производства и разработки в /src/environments/environments

  • Настройка окружения CI/CD может занять некоторое время, посмотрите здесь в самом низу

  • После завершения настройки запустите следующий shell-скрипт в Jenkins для usthe:

#!/bin/bash

# сборка в Jenkins через shell

# адрес репозитория Docker Hub, после чего сгенерированный образ будет загружен в registry или Docker Hub
REGISTRY_URL=127.0.0.1:5000
# docker login --username tomsun28 --password xxxx

# генерация версии на основе текущего времени
TAG=$REGISTRY_URL/$JOB_NAME:`date +%y%m%d-%H%M`

# использование Dockerfile, расположенного в проекте, для создания образа
docker build -t $TAG $WORKSPACE/.
``````markdown
docker push $TAG
docker rmi $TAG

# Проверка наличия ранее запущенного контейнера и его удаление при наличии
if docker ps -a | grep -i $JOB_NAME; then
docker rm -f $JOB_NAME
fi

# Запуск нового контейнера с использованием последней версии образа
docker run -d -p 4200:80 --name $JOB_NAME $TAG

Репозитории

gitee:

bootshiro

usthe

github:

bootshiro

usthe

...

Продолжается синхронизация ...

======================================

Пожалуйста, помогите улучшить этот проект ^^



Примеры работы

image4

image5

image6

image7

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

Howieair за иконку свиньи zhangkaitao за "Учимся Shiro" Статьи и открытые проекты от старших коллег на интернете


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

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

Введение

Система управления аудиториями в кампусе, фронтэнд. Развернуть Свернуть
MIT
Отмена

Обновления

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

Участники

все

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

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