java_web/test05/USER_ROLE_GUIDE.md

130 lines
2.8 KiB
Markdown
Raw Permalink 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.

# 用户角色访问控制指南
## 用户名格式规则
- **管理员**: `a_<姓名>` (例如: `a_admin`, `a_zhangsan`)
- **老师**: `t_<姓名>` (例如: `t_teacher`, `t_lisi`)
- **学生**: `s_<姓名>` (例如: `s_student`, `s_wangwu`)
## 权限说明
### 管理员权限
- 可以访问所有API端点
- 可以创建老师用户
- 可以创建学生用户
- 可以创建管理员用户
### 老师权限
- 可以访问老师端API (`/teacherAction/**`)
- 可以访问学生端API (`/studentAction/**`)
- 可以创建学生用户
- 不能创建老师或管理员用户
### 学生权限
- 只能访问学生端API (`/studentAction/**`)
- 不能创建任何用户
## API端点
### 用户管理API (`/userManagementAction/**`)
#### 创建老师用户
```
POST /userManagementAction/createTeacher
参数: username, password
权限: 仅管理员
```
#### 创建学生用户
```
POST /userManagementAction/createStudent
参数: username, password
权限: 管理员和老师
```
#### 创建管理员用户
```
POST /userManagementAction/createAdmin
参数: username, password
权限: 仅管理员
```
### 课程管理API示例 (`/courseAction/**`)
#### 选课API (学生端)
```
POST /courseAction/selectCourse
参数: courseId
权限: 学生
状态: 待实现
```
#### 创建课程API (老师端)
```
POST /courseAction/createCourse
参数: courseName, courseDescription
权限: 老师
状态: 待实现
```
#### 获取课程列表
```
GET /courseAction/getCourses
参数: page, pageSize
权限: 所有用户
状态: 待实现
```
## 使用示例
### 1. 管理员登录
```bash
# 假设已存在管理员用户 a_admin
POST /userAction/login
{
"username": "a_admin",
"password": "password"
}
```
### 2. 管理员创建老师用户
```bash
POST /userManagementAction/createTeacher
Headers: token: <登录返回的JWT>
{
"username": "t_zhangsan",
"password": "password123"
}
```
### 3. 老师创建学生用户
```bash
POST /userManagementAction/createStudent
Headers: token: <老师登录返回的JWT>
{
"username": "s_lisi",
"password": "password123"
}
```
## 注意事项
1. 所有API调用都需要在请求头中包含有效的JWT token
2. 用户名必须严格按照格式要求,否则会被拒绝
3. 拦截器会自动验证用户角色权限
4. 课程相关API目前只是空实现需要创建相应的数据库表后才能完成功能
## 数据库表需求
为了完整实现课程功能,需要创建以下表:
1. **课程表** (courses)
- id, course_name, course_description, teacher_id, create_time, etc.
2. **选课表** (student_courses)
- id, student_id, course_id, select_time, etc.
3. **课程老师映射表** (如果需要多对多关系)
- id, course_id, teacher_id, etc.
这些表创建后就可以完成课程管理API的具体实现了。