Django Auth介绍
封面图
•
2025-10-22
•
Django教程
0
0
0
0
Django 的 `django.contrib.auth` 是 Django 框架中用于处理用户认证(Authentication)和权限管理(Authorization)的核心模块。它提供了一套完整的用户认证系统,包括用户登录、注册、密码管理、权限控制等功能。 --- ## 🧩 一、Django Auth 的主要功能 ### 1. **用户模型(User Model)** - 默认使用 `User` 模型,位于 `django.contrib.auth.models`。 - 包含字段: - `username` - `password` - `email` - `first_name` - `last_name` - `is_staff` - `is_active` - `is_superuser` - `date_joined` - `last_login` ```python from django.contrib.auth.models import User ``` ### 2. **认证(Authentication)** - 用户登录验证:使用 `authenticate()` 函数验证用户名和密码。 - 登录用户:使用 `login()` 函数将用户绑定到当前会话。 ```python from django.contrib.auth import authenticate, login user = authenticate(username='john', password='secret') if user is not None: login(request, user) ``` ### 3. **权限管理(Permissions)** - 每个用户可以有多个权限(Permission),通常与模型(Model)相关。 - 可以通过 `user.has_perm('app.permission_codename')` 判断是否有权限。 ### 4. **组(Groups)** - 将用户分组,为一组用户赋予统一的权限。 ### 5. **密码管理** - 自动加密存储密码(使用 PBKDF2 + HMAC + SHA256 算法)。 - 提供密码重置、密码修改等功能。 --- ## 🔐 二、常用类和函数 | 功能 | 类/函数 | 说明 | |------|---------|------| | 用户模型 | `User` | 默认的用户模型 | | 认证 | `authenticate()` | 验证用户名和密码 | | 登录 | `login()` | 将用户添加到 session | | 登出 | `logout()` | 清除用户的 session | | 权限检查 | `has_perm()` | 检查用户是否有权限 | | 密码哈希 | `make_password()` / `check_password()` | 加密和验证密码 | | 用户创建 | `create_user()` / `create_superuser()` | 创建用户 | --- ## 📦 三、使用方式 ### 1. 在 `settings.py` 中启用: ```python INSTALLED_APPS = [ ... 'django.contrib.auth', 'django.contrib.contenttypes', ... ] ``` ### 2. 使用默认用户模型 ```python from django.contrib.auth.models import User user = User.objects.create_user(username='john', email='john@example.com', password='secret') user.save() ``` ### 3. 登录示例(在视图中) ```python from django.contrib.auth import authenticate, login from django.http import HttpResponseRedirect def my_view(request): username = request.POST['username'] password = request.POST['password'] user = authenticate(request, username=username, password=password) if user is not None: login(request, user) return HttpResponseRedirect("/success/") else: return HttpResponseRedirect("/login/") ``` --- ## 🛡️ 四、扩展和自定义 虽然 Django 提供了默认的 `User` 模型,但你可以通过以下方式自定义用户模型: ### 1. 自定义用户模型(推荐) ```python from django.contrib.auth.models import AbstractUser from django.db import models class CustomUser(AbstractUser): # 添加额外字段 age = models.PositiveIntegerField(null=True, blank=True) ``` 然后在 `settings.py` 中设置: ```python AUTH_USER_MODEL = 'myapp.CustomUser' ``` ### 2. 自定义权限 可以通过 `permissions` 字段或 `get_permissions()` 方法定义模型权限。 --- ## 🧾 五、安全建议 - 不要手动存储明文密码。 - 使用 HTTPS 来保护用户登录信息。 - 定期更新 Django 和依赖库,防止安全漏洞。 --- ## ✅ 总结 Django 的 `django.contrib.auth` 是一个强大而灵活的认证系统,适用于大多数 Web 应用程序。它提供了从用户管理到权限控制的一整套解决方案,同时支持高度自定义。 如果你需要更高级的功能(如 OAuth、JWT、多因素认证等),可以结合第三方库(如 `django-allauth`, `djangorestframework-simplejwt` 等)来扩展。 --- 需要我帮你写一个简单的登录注册示例吗?😊
上一篇:
Django ORM - 聚合查询
下一篇:
Django Cookie和Session介绍
标题录入,一次不能超过6条
返回顶部
留言
留言
评论