auth-web/ReadMe.md

266 lines
7.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Github地址
- [前端地址](https://github.com/BunnyMaster/bunny-admin-web.git)
- [后端地址](https://github.com/BunnyMaster/bunny-admin-server)
Gitee地址
- [前端地址](https://gitee.com/BunnyBoss/bunny-admin-web)
- [后端地址](https://gitee.com/BunnyBoss/bunny-admin-server)
# 项目特点
前端项目基于[pure-admin](https://github.com/pure-admin/pure-admin-thin)
开源项目进行了改进和优化RBAC基于角色的访问控制。在我项目中后端负责验证请求地址的访问权限。
整个项目都采用响应式设计,可以兼容移动设备,除了表格显示在移动端可能不够友好外,其他方面表现良好。由于表格本身具有一定的复杂性,手机上查看效果可能不理想,目前无法对其进行修改。
![image-20241026032407486](images/image-20241026032407486.png)
## 1. 首页定制
提供了自定义首页的功能可以根据个人喜好替换首页内容。我将首页设计成类似Git提交的内容以便更直观地查看信息。
## 2. 系统设置
系统设置包含基本的权限管理配置。
### 系统菜单管理
系统菜单管理功能允许您快速调整菜单内容的排序、显示和隐藏。删除功能采用逻辑删除,菜单名称通常与路由名称相同。如果菜单名称重复,系统会跳转至最后一个具有相同名称的路径,因此请确保菜单名称的唯一性。
系统菜单图标支持动态图标。
![image-20241026025901761](images/image-20241026025901761.png)
在添加外链时,路由名称即为外链地址。
![image-20241026025825052](images/image-20241026025825052.png)
### 用户管理
筛选条件和部门筛选可以同时进行选择。
其中系统中有一个默认用户是不会在前台用户进行展示的`Administrator`这个用户是系统预留,以防出错或维护使用
![image-20241026030000099](images/image-20241026030000099.png)
### 角色权限管理
权限管理中的权限添加支持树型结构。
![image-20241026030034998](images/image-20241026030034998.png)
![image-20241026030057212](images/image-20241026030057212.png)
在新增权限时请求地址可以是正则表达式或者Java中的antpath两者皆可兼容。
![image-20241026030247782](images/image-20241026030247782.png)
部门管理同样采用树型结构。
![image-20241026030105402](images/image-20241026030105402.png)
## 3. 系统配置
### 菜单图标
![image-20241026030355125](images/image-20241026030355125.png)
### 邮件用户配置
发送验证码时,若未配置用户默认值,则会使用默认地址发送。若默认地址也未配置,则会提示未设置默认邮箱用户。
默认选项最终只有一个。
其中默认选项无论有多少用户最终默认的只会有一个
![image-20241026030534421](images/image-20241026030534421.png)
### 邮件模板
第一个是发送验证码邮件模板
![image-20241026030557224](images/image-20241026030557224.png)
### 前端页面配置
因为这个模板作者将配置选项放在了前端文件中的`public`文件夹下, 配置选项现已变为动态,交给后端管理
![image-20241026030621707](images/image-20241026030621707.png)
## 4. 系统监控
### 服务监控
查看当前服务的CPU占用情况使用SpringBoot中的`actuator`端点。图表每2秒请求一次页面兼容移动设备。
![image-20241026031050902](images/image-20241026031050902.png)
### 后台文件管理
![image-20241026031117116](images/image-20241026031117116.png)
### 用户登录日志
![image-20241026031206836](images/image-20241026031206836.png)
### 任务执行日志
使用任务调度时执行状态都会记录在这个里面
![image-20241026031240109](images/image-20241026031240109.png)
### 系统缓存
项目中使用了SpringCache如果请求的内容可以缓存在SpringCache中
![image-20241026031252429](images/image-20241026031252429.png)
## 5. 定时任务
![image-20241026031339987](images/image-20241026031339987.png)
![image-20241026031346612](images/image-20241026031346612.png)
## 6. 多语言
![image-20241026031403524](images/image-20241026031403524.png)
![image-20241026031411689](images/image-20241026031411689.png)
## 外部页面
![image-20241026031448707](images/image-20241026031448707.png)
# 环境部署
使用Docker进行部署后端接口地址以`/admin`开头,但前端默认请求前缀为`/api`,因此在请求时需要进行替换。详细内容请参考以下【项目部署】说明。
## 配置相关
### docker文件
```dockerfile
# 使用官方的 Nginx 镜像作为基础镜像
FROM nginx
# 删除默认的 Nginx 配置文件
RUN rm /etc/nginx/conf.d/default.conf
# 将自定义的 Nginx 配置文件复制到容器中
COPY nginx.conf /etc/nginx/conf.d/default.conf
# 设置时区,构建镜像时执行的命令
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo "Asia/Shanghai" > /etc/timezone
# 创建一个目录来存放前端项目文件
WORKDIR /usr/share/nginx/html
# 将前端项目打包文件复制到 Nginx 的默认静态文件目录
COPY dist/ /usr/share/nginx/html
# 复制到nginx目录下
COPY dist/ /etc/nginx/html
# 暴露 Nginx 的默认端口
EXPOSE 80
# 自动启动 Nginx
CMD ["nginx", "-g", "daemon off;"]
```
### NGINX文件
在请求中会使用代理所以会拿不到用户真实的IP地址素以在要NGINX侠做下面的配置这样用户在访问时就可以拿到真实的IP了
```nginx
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
```
NGINX的文件
```nginx
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
server {
listen 80;
listen [::]:80;
server_name localhost;
location / {
root /etc/nginx/html;
index index.html index.htm;
try_files $uri /index.html;
}
# 后端跨域请求
location ~/admin/ {
proxy_pass http://172.17.0.1:8000;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
error_page 404 404.html;
location = /50x.html {
root html;
}
}
```
## 项目部署
使用WebStorm进行项目部署项目上线时默认端口为80。因此Docker默认暴露的IP端口也应为80NGINX中默认暴露的端口也是80三者应一一对应。
若无法下载请先使用pnpm下载。若不需使用pnpm请删除或修改相应内容。
![image-20241026025057129](images/image-20241026025057129.png)
### docker配置
![image-20241026024116090](images/image-20241026024116090.png)
### 配置环境
设置启动端口号和项目地址机器后端请求地址
![image-20241026024813858](images/image-20241026024813858.png)
#### 配置线上环境
设置项目启动端口号,线上环境默认请求路径为`/admin`需在NGINX中将访问请求前缀更改为`/admin`。
![image-20241026024940747](images/image-20241026024940747.png)
![image-20241026024243785](images/image-20241026024243785.png)
#### 配置开发环境
开发环境默认IP为7000若与本地项目端口冲突请修改。后端请求地址为7070。
前端设置的请求前缀为`/api`,但后端接受的前缀为`/admin`,因此需在服务中修改此内容。
![image-20241026024318644](images/image-20241026024318644.png)
**修改请求路径**
![image-20241026031651591](images/image-20241026031651591.png)
### 部署命令
```bash
docker build -f Dockerfile -t bunny_auth_web:1.0.0 . && docker run -p 80:80 --name bunny_auth_web --restart always bunny_auth_web:1.0.0
```
# 展望未来
1. 计划将文件上传服务改为本地的OSSMinio可能会被移除。