Blandskron/m6-l5-p3-auth-api-django
GitHub: Blandskron/m6-l5-p3-auth-api-django
基于 Django 的教育项目,演示身份验证、授权、权限分组及 REST API 的完整实现与部署流程。
Stars: 0 | Forks: 1
# Django 的身份验证与授权
这是一个教育项目,展示了 `django.contrib.auth` 模型、会话、登录/登出、权限、分组、mixins 和资源保护。此外还保留了配置文件的 REST API 及其 OpenAPI 文档。
## 使用 Docker 运行(推荐)
```
docker compose up --build
```
入口地址为 ,管理后台位于 。
自动创建的测试凭据:
- 用户名:`admin`
- 密码:`Admin12345!`
`entrypoint.sh` 会执行数据库迁移,仅在超级用户不存在时创建它,收集静态文件并启动 Django。该脚本是幂等的,并且 SQLite 数据将持久化存储在 `django_data` 卷中。
## 功能演示
1. 打开 `/cuentas/login/` 并登录。系统使用了原生的 `LoginView` 和 Django session。
2. `/` 受 `LoginRequiredMixin` 保护。
3. 从面板打开个人资料:使用了带有 `authapp.view_profile` 的 `PermissionRequiredMixin`,并限制只有对象的所有者才能访问。
4. 在 `/admin/auth/group/` 中查看 `Usuarios de perfil` 组,该组是在数据库迁移后创建的,具有 `view_profile` 和 `change_profile` 权限。
5. 在 `/admin/auth/permission/` 中可以查看 `auth_permission` 的记录,包括 Profile 的 add/change/delete/view 权限。
6. 移除某用户/组的 `view_profile` 权限并尝试访问个人资料:页面将重定向到 `/acceso-denegado/`。
7. 通过头部的 POST 表单进行登出(`LogoutView`)。
## 相关路由
| 路由 | 应用的控制 |
| --- | --- |
| `/cuentas/login/` | 原生 `LoginView` |
| `/cuentas/logout/` | 原生 `LogoutView` (POST + CSRF) |
| `/` | `LoginRequiredMixin` |
| `/mi-perfil//` | `PermissionRequiredMixin` + 所有者限制 |
| `/admin/` | 用户、组和权限管理 |
| `/api/` | 会话、DRF 权限及 CSRF 保护 |
| `/docs/swagger/` | API 文档 |
## 本地运行
需要 Python 3.12 或更高版本:
```
pip install -r requirements.txt
python authproject/manage.py migrate
python authproject/manage.py runserver
```
测试与检查:
```
python authproject/manage.py check
python authproject/manage.py migrate
python authproject/manage.py test
docker compose config
docker compose build
```
概念说明及与指南的对应关系详见 `DOCUMENTACION_PROYECTO.md`。
标签:Django, Docker, REST API, Syscall, Web开发, 安全防御评估, 教学示例, 请求拦截, 身份验证与授权, 逆向工具