# rust cassie_axum **Repository Path**: stringlxd/cassie_axum ## Basic Information - **Project Name**: rust cassie_axum - **Description**: 一个基于rust axum的web 框架 高性能易上手 可用于构建任何web后端项目 供rust爱好者学习使用,基础缓存定义,redis,orm框架选用Ribatis,casbin-rs集成,适配器编写 ,用户权限jwt 融合casbin-rs websocket - **Primary Language**: Rust - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 191 - **Forks**: 74 - **Created**: 2022-01-28 - **Last Updated**: 2025-08-03 ## Categories & Tags **Categories**: backend **Tags**: Rust, axum, Casbin, Rbatis, Deno ## README # cassie_axum #### 介绍 基于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 #### 演示地址 http://47.104.64.212/#/login #### 软件架构 软件架构说明 1. rust web框架 2. web:axum 3. 数据库:mysql 4. Orm:Ribatis 5. RBAC:cabin-rs 6. 验证码:captcha 7. 数据验证:validator 8. websocket:tokio-tungstenite #### 开发计划 1. 基础缓存定义,ORM框架定义 2. 返回数据格式定义 3. 完成casbin的基础RABC权限集成 4. TODO 微服务集成 KONG网关集成 5. nacos注册中心集成 6. 动态表单实现 7. 微信小程序工具集开发 8. 租户化实现 9. javascript动态脚本集成 #### 已完成 1. 基础缓存定义,redis 2. orm框架选用Ribatis 3. casbin-rs集成,适配器编写 4. 用户权限jwt 融合casbin-rs 5. 完成nacos注册和心跳集成 6. 动态表单实现 7. 租户化实现 8. javascript动态脚本集成 9. 自定义javascript playground #### 使用说明 前置 安装rust开发环境 遵循官网 如果开启了websocket 请放开20003端口 否则连接不到 1. 初始化DB,添加配置 导入db/cassie_admin.sql文件 配置application.yml 2. 构建并启动项目 cargo build cago run 3. 启动前端项目https://gitee.com/stringlxd/cassie_admin 默认端口 9999 4. 打包 cargo build --package cassie_web --relaese #### 框架说明 管理员账号:admin/123456 测试账号:lixingdong1/123456 1. https://casbin.org/docs/zh-CN/overview 2. https://rbatis.github.io/rbatis.io/#/ 3. https://axum.rs/ 4. https://github.com/denoland/rusty_v8 5. https://github.com/denoland/deno #### 公众号 不定期会更新实战视频 源码分享 ![图片](./wechat.jpg) #### 参与贡献 String <348040933@qq.com> 交流群:435604279 感谢Ribatis作者 #### 提示 代码每天都在更新,大家每天及时更新 #### 更新日志 2022.7.27 完成websocket 单聊天室开发 ``` rust ///ws 默认端口20003 ///默认连接地址 ///access_token 是登录以后的token ///ws://127.0.0.1:20003/?access_token=xxxxxxxx ///链接如果没有token的话会链接不上 ``` 2022.5.30 event事件宏定义 开发者无需关注事件如何发送触发 只需要在数据库里配置响应脚本即可 ```rust ///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 } ``` 2022.5.16 完成js playground开发 ![图片](./img.png) ```renderscript //获取数据字典 let data = Cassie.getAllDict(); for(let i=0;i, }, } //发布事件 let pharos = APPLICATION_CONTEXT.get::>(); 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 ```rust 1:更新casbin初始化权限脚本 2:添加 resource/:id 资源验证方式 3:部分代码重构 ```