当前位置: 首页 > news >正文

我是如何使用GML从零到一开发认证授权服务的?不来看看?

项目地址

https://github.com/userwanyong/auth-service

开发环境

glm-4.7+claude code开发认证授权服务 以及 glm-5-turbo+cc用于对接两个线上项目

AI辅助确认需求

我要做一个有关登录、权限校验的微服务,请你检索市面上的相关服务(顶级开源项目等),列出我还需要支持哪些功能

审核AI给出的计划后,执行编码

首次启动报错了,默认使用的是JPA

让他改为mybatis

现在你需要将数据操作层换为mybatis,并遵循mapper包的形式

第二次成功启动

测试验收

  • 注册:成功注册用户并为他分配默认角色,注册功能验收通过!

  • 失败:登录、刷新访问令牌
  • 成功:登出、修改密码、删除用户、搜索用户、分配角色、更新用户状态、创建角色、更新角色、删除角色、根据编码获取角色、为角色分配权限、获取所有权限、创建权限、获取权限详情
  • 部分成功:获取当前用户信息、获取所有角色、获取角色详情
  • 漏写:删除权限

大部分功能是成功的,将自己测试的结果告诉AI,进行修复即可,最终所有功能正常使用

优化

  1. 因为jwt是无状态的,用户退出登录后再次使用原令牌(accessToken有效期内),依然有权限访问。用户登出同时将此令牌放入redis中,令牌校验时先判断一次是否在黑名单
  2. 对于token是在过滤器校验的,校验失败直接返回了,客户端什么消息都没收到。需要在校验失败时将具体信息返回给用户(是令牌失效啊还是令牌过期等等)

提供rpc接口

保留 REST API的同时,提供rpc接口并注册到nacos中。你需要先检索顶级开源项目的实现策略,编写一份开发文档,待我审核后再进行编码操作

这里AI给出的方案还是挺完整的,直接开始编写代码

最终,AI生成的yml文件中,有2个文件报错

貌似是idea缓存问题,代码中实际使用jakarta,但他一直报javax的问题

通过使用 webSearchPrime 和 webReader 两个mcp,定位真正原因:

接着让他提供Protobuf的形式来适用不同的编程语言

测试验收

  • authenticate、getUserById、hasRole、getUserRoles、generateToken、parseToken、revokeAllTokens 成功通过测试

支持多租户

现在这个微服务貌似只能是单应用认证,如果我想对接多个平台,应该怎么办(参考顶级开源项目的实现方案)

这次使用的是 webSearchPrime 、 webReader 、开源仓库搜索 三个mcp进行资料的搜索以及开源项目结构功能的分析,然后审核AI给出的方案,输入“按计划执行”,就可以去喝茶去了

至此,http的28个接口+rpc的10个接口就告一段落了

优化拓展

1. 现在租户管理与各租户用的是相同的权限,个体租户也可以进行租户管理了,这很不合理,所以对于租户管理应该有单独的一套租户平台权限,用于控制该认证授权微服务对租户的控制(CRUD等) 2. 对于现有的个体租户权限等体系保持不变,只需要新添加一套平台管理权限即可

添加前端页面

初始提示词

充分分析整个项目,确保你完全理解。我需要你写一个前端界面来对接已有的http接口,要求这个管理界面随此后端程序启动时一起启动,注意区分权限问题哦

最终效果如下(未使用任何skill,使用原生html和css作为静态资源随后端一起启动,因为我的最终目的是实用性和轻量级):

登录页

仪表盘

租户平台管理方

普通租户管理方

部署文件

version: '3.8' services: auth-service: image: registry.cn-wulanchabu.aliyuncs.com/wanyj/auth-service:4.0 container_name: auth-service-app restart: unless-stopped environment: TZ: Asia/Shanghai # Database Configuration SPRING_DATASOURCE_URL: jdbc:mysql://127.0.0.1:3306/auth_service?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true SPRING_DATASOURCE_USERNAME: root SPRING_DATASOURCE_PASSWORD: 12123 # Redis Configuration SPRING_DATA_REDIS_HOST: 127.0.0.1 SPRING_DATA_REDIS_PORT: 6379 SPRING_DATA_REDIS_PASSWORD: 12123 # Nacos Configuration dubbo.registry.address: nacos://127.0.0.1:8848 dubbo.registry.username: nacos dubbo.registry.password: nacos dubbo.metadata-report.address: nacos://127.0.0.1:8848 dubbo.metadata-report.username: nacos dubbo.metadata-report.password: nacos # JVM Configuration JAVA_OPTS: >- -XX:+UseContainerSupport -XX:MaxRAMPercentage=75.0 -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Xlog:gc*:file=/logs/gc.log:time,tags:filecount=10,filesize=100M ports: - "8123:8123" # REST API - "20880:20880" # Dubbo RPC volumes: - app-logs:/app/logs networks: - auth-network # Named volumes for data persistence volumes: app-logs: driver: local # Network for service communication networks: auth-network: driver: bridge

对接我的两个其他服务

后端部分

提示词集合如下

1. 请你分析整个项目,确保充分理解,特别是登录授权部分 2. 现在你需要参考 https://github.com/userwanyong/auth-service 这个开源项目,完善当前项目的认证授权功能(开源项目环境我已搭建好,你只需要写代码即可)

期间有一个报错,以为是AI搞错了,直接丢给它了,结果一针定位,是我auth-server部署的问题

需要在auth-service部署文件中添加

DUBBO_IP_TO_REGISTRY: 你的ip

完美启动,无报错

修改36文件,新增1文件,所有与之有关的地方都进行了更改

然后让AI修改认证授权服务所要对接的两个项目的前端UI即可

最终本次开发的认证授权服务成功对接我的两线上个项目:

https://xybjz.wanyj.cn/ 和 https://lxzs.wanyj.cn/login 非常省心,这就是Vibe Coding的时代吗,全程没动手敲代码

最后,给大家一个优惠链接,有需要的小伙伴可以来看看:95折优惠链接

http://www.jsqmd.com/news/527835/

相关文章:

  • 【模板】ST 表 RMQ 问题
  • 从polycide到salicide:半导体工艺中的电阻优化演进史
  • 过滤器和监听器
  • 老旧设备复活计划:使用OpenCore Legacy Patcher实现旧Mac系统升级
  • slowAES嵌入式AES解密库:绕过JS反爬的轻量实现
  • PREi:ESP32/ESP8266轻量级伪REST接口框架
  • RK3588上跑iperf3测速前,你的RTL8188eus USB WiFi驱动真的装对了吗?避坑指南
  • DeepSeek-OCR · 万象识界效果展示:多栏报纸扫描件→逻辑顺序Markdown重排成果
  • thinkphp5模型的基本和高级用法(提供代码示例)
  • 用MATLAB/Simulink手把手搭建汽车悬架模型:从随机路面到舒适性分析(附脚本)
  • 我用Claude Code做了一个TTS的文本转语音工作台(免费、已开源)(Claude Code保姆级图文配置+使用教程+中转站)(MiMo-V2-TTS教程)
  • LumiPixel Canvas Quest人像修复与高清化实战:让老照片焕发新生
  • 百度千帆开源 Qianfan-OCR:端到端文档智能模型的架构革命
  • 创新项目实训博客(二):Flutter 跨平台架构初始化与基建落地
  • C++/Qt使用Snap7对西门子PLC 读写操作
  • 别再让标签打架了!高德地图上车辆标签重叠的3种优雅解决方案(附Vue代码)
  • **数据库技术基础**章节中关于**SQL(结构化查询语言)**的核心知识点,主要聚焦于**字符串模式匹配**和**视图查询
  • ChatGPTuino:ESP32/Arduino轻量级LLM嵌入式客户端
  • 图像融合技术:小波变换与拉普拉斯金字塔方法
  • 免费商用地图哪里找?用QGIS+HCMGIS插件搞定建筑轮廓/路网数据下载
  • Swig实战指南:从零构建Java与C/C++的跨语言桥梁(CMake集成版)
  • 大厂都在找场景,滴滴先把 AI 装进了出行里
  • DeOldify移动端适配初探:在Android设备上实现本地图片上色功能
  • 平面设计师效率工具:RMBG-2.0背景移除镜像实战,复杂场景轻松处理
  • 通义千问1.5-1.8B-Chat-GPTQ-Int4实战:辅助C语言初学者理解指针与内存
  • 《深度研究:提示工程架构师在Agentic AI上下文工程用户体验设计的创新实践》
  • AI Infinity镜像大赛圆满收官!17 款优质镜像上线,共筑国产算力开发者新生态
  • 2026最权威AI论文写作软件排名:这些工具被高校和导师悄悄推荐
  • 5大步骤让老款Mac重获新生:OpenCore Legacy Patcher系统升级全指南
  • GLM-4-9B-Chat-1M详细步骤:vLLM启用max_num_batched_tokens=8192吞吐优化