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开发, 安全防御评估, 教学示例, 请求拦截, 身份验证与授权, 逆向工具