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

OSCHINA-MIRROR/stringlxd-cassie_axum

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

Введение

На основе Rust Axum был создан веб-фреймворк для разработки серверной части приложения с базовыми функциями авторизации, пользователями, кешированием, проверкой и генерацией кода.

Axum — это проект веб-фреймворка на Rust, который используется для создания веб-приложений.

Проект

Архитектура программного обеспечения

  1. Веб-фреймворк: Rust Axum.
  2. База данных: MySQL.
  3. ORM: Ribatis.
  4. RBAC: Cabin-RS.
  5. Проверка подлинности: Captcha.
  6. Проверка данных: Validator.
  7. WebSocket: Tokio Tungstenite.

План разработки

  1. Определение базового кеша и ORM-фреймворка.
  2. Определение формата возвращаемых данных.
  3. Интеграция Casbin для базовой авторизации RBAC.
  4. Интеграция микросервисов (KONG).
  5. Интеграция Nacos для регистрации и сердцебиения.
  6. Реализация динамических форм.
  7. Разработка инструментов для мобильных приложений WeChat.
  8. Реализация мультитенантности.
  9. Интеграция JavaScript динамических скриптов.

Что уже сделано

  1. Определён базовый кеш (Redis).
  2. Выбран ORM-фреймворк (Ribatis).
  3. Реализована интеграция с Casbin-RS и написан адаптер.
  4. Объединение JWT с Casbin-RS для аутентификации пользователей.
  5. Завершена интеграция Nacos для регистрации и сердцебиения.
  6. Реализованы динамические формы.
  7. Реализована мультитенантность.
  8. Интегрированы динамические скрипты JavaScript.
  9. Создана пользовательская площадка для JavaScript.

Использование

Перед началом работы необходимо установить среду разработки Rust и следовать инструкциям на официальном сайте. Если вы используете WebSocket, откройте порт 20003. В противном случае соединение не будет установлено.

  1. Инициализируйте базу данных и добавьте конфигурацию. Импортируйте файл db/cassie_admin.sql и настройте файл application.yml.
  2. Соберите и запустите проект с помощью команд cargo build и cargo run.
  3. Запустите фронтенд-проект по ссылке: https://gitee.com/stringlxd/cassie_admin (по умолчанию порт 9999).
  4. Создайте пакет с помощью команды cargo build --package cassie_web --release.

Фреймворк

Административный аккаунт: admin/123456. Тестовый аккаунт: lixingdong1/123456.

Общественный аккаунт

Регулярно публикуются видео с практическими примерами и исходный код.

Участие и вклад

String 348040933@qq.com. Группа для общения: 435604279.

Спасибо автору Ribatis!

Примечание

Код постоянно обновляется, поэтому рекомендуется регулярно обновлять его.

Журнал обновлений

27 июля 2022 года: завершена разработка однопользовательского чата WebSocket.

///ws 默认端口20003
///默认连接地址
///access_token 是登录以后的token
///ws://127.0.0.1:20003/?access_token=xxxxxxxx
///链接如果没有token的话会链接不上

30 мая 2022 года: определены события макросов. Разработчикам не нужно беспокоиться о том, как отправлять и запускать события, достаточно настроить ответные сценарии в базе данных.

///api_operation event_bus触发器
/// #[api_operation("result=false")] 返回值为Result类型 默认是true   false 
/// #[api_operation("return=true")]  是否传递返回值 到jsRuntime里面 默认是不开启的
/// #[api_operation("result=false|return=true")]多参数同时使用
#[api_operation]
pub async fn nav() -> impl IntoResponse {
    let request_model = get_local().unwrap();
    let vo = get_user_menu_list(request_model.uid().clone().to_string(), request_model.super_admin().clone(), request_model.agency_code().clone()).await;
    vo
}

16 мая 2022 года: разработана площадка для игр JavaScript.

//获取数据字典     
let  data = Cassie.getAllDict();
for(let i=0;i<data.length;i++){
console.log("name:"+data[i].dict_name);
//获取系统配置
let  data = Cassie.getConfig();
console.log(data.redis_url);
//根据id获取用户
let  data = Cassie.getUserById("1");
console.log(data);
//获取当前登录用户
let request_model = request_context.request_model;
let data = Cassie.getUserById(request_model.uid+"");
console.log(data);

25 апреля 2022 года: разработка WeChat.

//微信小程序授权登录开发完成
//添加模块 cassie_devtools           

17 апреля 2022 года: добавлен механизм правил.

//js动态脚本解析 添加自定义v8引擎
//添加模块 cassie_engine
//添加模块 cassie_ops           

6 апреля 2022 года: добавлены функции входа в систему и ведения журнала операций.

//добавить функцию входа в журнал
//добавить функциональность журнала операций
 //создать объект события журнала
            let event = CassieEvent::LogOperation {
                operation: Some(action.clone()),
                request_uri: Some(path.clone()),
                ip: None,
                creator_name,
                request_params: None,
                request_method: Some(action.clone()),
                request_time: Some(start.elapsed().as_millis().to_string()),
                status,
            };
            //опубликовать событие
            fire_event(event).await;
```````````````````````````````````````````````````````````````` **APPLICATION_CONTEXT.get::<SharedPharos<CassieEvent>>();**

pharos.notify(CassieEvent::Log {}).await;

**2022.3.31**

Завершена разработка с учётом требований к многопользовательскому режиму.

Конфигурация application.yml:
tenant:
  enable: true // Включить многопользовательский режим.
  column: "agency_code" // Поле для идентификации пользователя.
  ignore_table: // Игнорировать таблицы:
    - "sys_log_login"

**2022.3.29**

Переработана структура пакета.

Заменены способы реализации кэша и thread_local.

**2022.3.18**

Реализована функция динамической формы.

В MongoDB конфигурация application.yml имеет вид:
mongodb_url: "mongodb://localhost:27017"

1. Определены бизнес-группы.
2. Определены столбцы для хранения в MySQL.
3. Значения хранятся в MongoDB.
4. Формы разделены на from и table.
5. entity_id — это идентификатор бизнеса.

**2022.2.22**

Выполнена регистрация и проверка пульса в Nacos.

Конфигурация application.yml в Nacos:
nacos_server: "http://127.0.0.1:8848/nacos"
application_name: "cassie_admin"

**2022.2.15**

1. Обновлён скрипт инициализации прав Casbin.
2. Добавлен способ проверки ресурса resource/:id.
3. Частичный рефакторинг кода.

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

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

Введение

Это веб-фреймворк на основе Rust и Axum, высокопроизводительный и простой в освоении. Подходит для создания любых веб-бэкенд проектов. Предназначен для изучения любителями Rust. Определено базовое кэширование, используются Redis и ORM-фреймворк Ribatis. Интегрирован Casbin-rs, написаны адаптеры. Реализовано объединение пользовательских прав JWT... Развернуть Свернуть
Apache-2.0
Отмена

Обновления

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

Участники

все

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

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