基于rust axum 完成web端手脚架 基础权限,用户,缓存,验证,代码生成
rust axum web 是rust开发的web手脚架项目 前端项目 https://gitee.com/stringlxd/cassie_admin
B站: https://space.bilibili.com/480402847?spm_id_from=333.788.b_765f7570696e666f.1
文档:https://www.yuque.com/heapw/hsr49u/kglmy5
软件架构说明
- rust web框架
- web:axum
- 数据库:mysql
- Orm:Ribatis
- RBAC:cabin-rs
- 验证码:captcha
- 数据验证:validator
- websocket:tokio-tungstenite
- 基础缓存定义,ORM框架定义
- 返回数据格式定义
- 完成casbin的基础RABC权限集成
- TODO 微服务集成 KONG网关集成
- nacos注册中心集成
- 动态表单实现
- 微信小程序工具集开发
- 租户化实现
- javascript动态脚本集成
- 基础缓存定义,redis
- orm框架选用Ribatis
- casbin-rs集成,适配器编写
- 用户权限jwt 融合casbin-rs
- 完成nacos注册和心跳集成
- 动态表单实现
- 租户化实现
- javascript动态脚本集成
- 自定义javascript playground
前置 安装rust开发环境 遵循官网 如果开启了websocket 请放开20003端口 否则连接不到
- 初始化DB,添加配置 导入db/cassie_admin.sql文件 配置application.yml
- 构建并启动项目 cargo build cago run
- 启动前端项目https://gitee.com/stringlxd/cassie_admin 默认端口 9999
- 打包 cargo build --package cassie_web --relaese
管理员账号:admin/123456 测试账号:lixingdong1/123456
- https://casbin.org/docs/zh-CN/overview
- https://rbatis.github.io/rbatis.io/#/
- https://axum.rs/
- https://github.com/denoland/rusty_v8
- https://github.com/denoland/deno
String [email protected] 交流群:435604279
感谢Ribatis作者
代码每天都在更新,大家每天及时更新
2022.7.27 完成websocket 单聊天室开发
///ws 默认端口20003
///默认连接地址
///access_token 是登录以后的token
///ws://127.0.0.1:20003/?access_token=xxxxxxxx
///链接如果没有token的话会链接不上
2022.5.30 event事件宏定义 开发者无需关注事件如何发送触发 只需要在数据库里配置响应脚本即可
///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
}
//获取数据字典
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);
2022.4.25 微信开发
//微信小程序授权登录开发完成
//添加模块 cassie_devtools
2022.4.17 规则引擎
//js动态脚本解析 添加自定义v8引擎
//添加模块 cassie_engine
//添加模块 cassie_ops
2022.4.6
//添加登录日志功能
//添加操作日志功能
//构建操作日志event对象
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;
2022.4.5
//完成eventBus 1.0开发
//事件基本对象
pub enum CassieEvent {
Log {},//日志
Sms {
sms_type: u8,//消息
},
Custom {
event_type: u8, //自定义事件 1 脚本 2 其他业务分类(待定)
data: HashMap<String, String>,
},
}
//发布事件
let pharos = 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
包结构重新梳理
替换缓存和tread_loacal实现方式
2022.3.18
完成动态表单功能
mongodb 配置 application.yml
```yml
mongodb_url: "mongodb://localhost:27017"
```
1. 业务分组定义
2. colums定义 mysql存储
3. value使用 mongodb存储
4. 表单类型分为 from 和table
5. entity_id 是业务id
2022.2.22
完成nacos注册和心跳
nacos 配置 application.yml
```yml
nacos_server: "http://127.0.0.1:8848/nacos"
application_name: "cassie_admin"
```
2022.2.15
1:更新casbin初始化权限脚本
2:添加 resource/:id 资源验证方式
3:部分代码重构