{"id":23470304,"url":"https://github.com/hankaibo/amy-java","last_synced_at":"2025-04-14T16:56:53.294Z","repository":{"id":46948689,"uuid":"165073657","full_name":"hankaibo/amy-java","owner":"hankaibo","description":"一个简洁的后台管理系统后台代码。","archived":false,"fork":false,"pushed_at":"2023-07-25T14:00:42.000Z","size":1099,"stargazers_count":12,"open_issues_count":2,"forks_count":5,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-03-28T05:31:48.088Z","etag":null,"topics":["jwt","lombok","mapper","mybatis","pagehelper","redis","shiro","spring","spring-boot","swagger2","websocket"],"latest_commit_sha":null,"homepage":"http://47.95.120.23:9000","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hankaibo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-01-10T14:25:54.000Z","updated_at":"2024-04-04T15:32:45.000Z","dependencies_parsed_at":"2024-12-24T15:51:10.426Z","dependency_job_id":"b6ca0cde-0844-4bf7-8890-fb9a3ff7f3df","html_url":"https://github.com/hankaibo/amy-java","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hankaibo%2Famy-java","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hankaibo%2Famy-java/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hankaibo%2Famy-java/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hankaibo%2Famy-java/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hankaibo","download_url":"https://codeload.github.com/hankaibo/amy-java/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248923665,"owners_count":21183949,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["jwt","lombok","mapper","mybatis","pagehelper","redis","shiro","spring","spring-boot","swagger2","websocket"],"created_at":"2024-12-24T15:50:57.290Z","updated_at":"2025-04-14T16:56:53.269Z","avatar_url":"https://github.com/hankaibo.png","language":"Java","readme":"\u003ch1 align=\"center\"\u003e后端脚手架\u003c/h1\u003e\r\n\r\n## 项目特性\r\n\r\n- :gem: **优雅美观**：基于 Spring Boot 体系精心设计\r\n- :rocket: **最新技术栈**：使用 Spring Boot,Shiro,MyBatis 等前沿和成熟的技术开发\r\n- :closed_lock_with_key: **安全认证**：基于 token 认证，实现按钮级别的权限认证\r\n- :gear: **最佳实践**：良好的工程实践助您持续产出高质量代码\r\n- :v: **快速高效**：前后端分离，专注后端，快速实现 restful 接口定义\r\n\r\n## 项目目录\r\n\r\n```\r\namy  \r\n├── logs -- 日志目录 \r\n├── src/main/java/cn.mypandora.springboot \r\n|   ├── config                  -- 通用配置  \r\n|   |    ├── exception              -- restful 接口异常信息配置目录 \r\n|   |    ├── filter                 -- filter配置目录\r\n|   |    ├── redis                  -- redis配置目录\r\n|   |    ├── shiro                  -- shiro配置目录 \r\n|   |    ├── swagger                -- swagger配置目录 \r\n|   |    ├── validate               -- validate配置目录 \r\n|   |    ├── webmvc                 -- mvc配置目录 \r\n|   |    └── websocket              -- websocket配置目录   \r\n|   ├── core                    -- 通用核心代码  \r\n|   |    ├── base                   -- 通用Mapper和分页类 \r\n|   |    ├── converter              -- 格式转换器 \r\n|   |    ├── enums                  -- 自定义枚举类 \r\n|   |    ├── exception              -- 异常信息封装类 \r\n|   |    ├── listener               -- websocket监听类 \r\n|   |    ├── shiro                  -- shiro扩展配置 \r\n|   |    ├── support                -- XSS 过滤 \r\n|   |    └── utils                  -- 工具类  \r\n|   |    └── validate               -- 自定义校验组  \r\n|   ├── modular                 -- 业务模块  \r\n|   |    ├── system                 -- 通用后台管理代码目录 \r\n|   |    └── your                   -- 放置你自己的业务代码\r\n└── src/main/resources  \r\n    ├── i18n                    -- 国际化目录 \r\n    ├── mybatis                 -- Mybatis的Mapper.xml目录 \r\n    |   ├── mapper                  -- MyBatis sql语句配置目录\r\n    |   └── mybatis-config          -- MyBatis配置文件\r\n    ├── sql -- sql脚本目录 \r\n    |   └── init.sql            -- 初始化建表文件    \r\n    ├── application.yml         -- 项目默认配置文件  \r\n    ├── application-dev.yml     -- 开发环境配置文件  \r\n    ├── application-docker.yml  -- docker环境配置文件  \r\n    ├── application-prod.yml    -- 生产环境配置文件  \r\n    ├── application-test.yml    -- 测试环境配置文件  \r\n    └── logback-spring.xml      -- 日志配置文件  \r\n```\r\n\r\n## 技术选型\r\n\r\n[x] | 技术名 | 版本\r\n :---: | :--- | :---  \r\n[x] | SpringBoot | 2.3.9\r\n[x] | Redis(spring-boot-starter-data-redis) | 2.3.9\r\n[x] | Mybatis(mybatis-spring-boot-starter) | 2.1.1\r\n[x] | Mapper(mapper-spring-boot-starter) | 2.1.5\r\n[x] | PageHelper(pagehelper-spring-boot-starter) | 1.2.13\r\n[x] | Shiro | 1.7.1\r\n[x] | jjwt | 0.10.7\r\n[x] | jBCrypt | 0.4.1\r\n[x] | jasypt-spring-boot-starter | 3.0.3\r\n[x] | Swagger3 | 3.0.0\r\n\r\n## 使用说明\r\n\r\n1. 项目使用了Lombok简化代码，请安装对应的IDE插件。\r\n\r\n## 开发环境\r\n\r\n1. openjdk 11\r\n2. MariaDB 10.4.13\r\n3. Redis 5.0\r\n\r\n## 快速开始\r\n\r\n1. 下载项目\r\n    ```\r\n   git clone https://github.com/hankaibo/amy-java.git\r\n   ```\r\n\r\n2. 导入项目\r\n\r\n   使用自己的 IDE 导入, Intellij IDEA 社区版本即可。\r\n\r\n3. 导入数据库\r\n\r\n   安装 MySQL(MariaDB) 数据库，执行 init.sql 文件建表初始化数据；\r\n\r\n   安装 redis。\r\n\r\n4. 配置数据库\r\n\r\n   打开 application-dev.yml 修改 MySQL 和 Redis 连接信息。\r\n\r\n5. 启动项目\r\n\r\n   找到 SpringbootApplication 启动类, 启动即可。\r\n\r\n6. 启动前端项目\r\n\r\n   请参考前端项目[amy-react](https://github.com/hankaibo/amy-react)配置。\r\n\r\n## 逻辑\r\n\r\n1. POST请求【用户名/密码】到 /api/v1/login 接口进行登入，如果成功返回一个加密 token,role及resources。\r\n\r\n   token: 之后用户访问每一个需要权限的网址请求必须在 header 中添加 Authorization 字段，例如 Authorization: Bearer token。\r\n\r\n   role：方便前端处理的角色信息。\r\n\r\n   resources：用户对应的所有资源数据集合，对每个人的页面进行按钮等组件的动态显示与隐藏。\r\n2. 登录成功之后，自动发起GET请求（携带token）到 /api/v1/users/info，获取当前登录用户的信息。\r\n\r\n   user: 当前登录用户的个人信息。\r\n\r\n3. 之后单击页面相关按钮发送的请求，都会自动将 token 加入到 header 中，以保证有权限认证，可以成功请求到后台数据。\r\n\r\n![Image text](./image/jwt.png)\r\n\r\n## 参考\r\n\r\n本文参考了以下项目，特此感谢。\r\n\r\n1. [https://github.com/tomsun28/bootshiro](https://github.com/tomsun28/bootshiro)\r\n2. [https://jinnianshilongnian.iteye.com/blog/2049092](https://jinnianshilongnian.iteye.com/blog/2049092)\r\n3. [https://github.com/zhaojun1998/Shiro-Action](https://github.com/zhaojun1998/Shiro-Action)\r\n4. [https://github.com/Smith-Cruise/Spring-Boot-Shiro](https://github.com/Smith-Cruise/Spring-Boot-Shiro)\r\n5. [https://github.com/zzycreate/spring-boot-seed](https://github.com/zzycreate/spring-boot-seed)\r\n6. [https://github.com/stylefeng/Guns](https://github.com/stylefeng/Guns)\r\n\r\n## 赞助商\r\n\r\n非常感谢 Jetbrains 提供的免费授权。\r\n\r\n\u003ca href=\"https://www.jetbrains.com/\" target=\"_blank\"\u003e\u003cimg src=\"https://www.jetbrains.com/company/brand/img/logo1.svg\" width=\"100\"\u003e\u003c/a\u003e\r\n\r\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhankaibo%2Famy-java","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhankaibo%2Famy-java","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhankaibo%2Famy-java/lists"}