yx:对oauth的精读和注释

master
云涵 1 month ago
parent 301bb7b687
commit f45bfa5ded

@ -1,3 +1,17 @@
"""
OAuth应用数据库迁移文件
本迁移文件由Django自动生成用于创建OAuth认证相关的数据库表结构
包含OAuth配置和OAuth用户两个主要模型支持多种第三方登录方式
生成的表结构
- oauth_oauthconfig: OAuth服务提供商配置表
- oauth_oauthuser: OAuth用户信息表
迁移依赖
- 依赖于Django内置的用户模型AUTH_USER_MODEL
"""
# Generated by Django 4.1.7 on 2023-03-07 09:53
from django.conf import settings
@ -7,51 +21,87 @@ import django.utils.timezone
class Migration(migrations.Migration):
"""
OAuth应用初始迁移类
继承自migrations.Migration定义数据库表结构的创建操作
initial = True 表示这是该应用的第一个迁移文件
"""
initial = True
dependencies = [
# 声明对Django用户模型的依赖
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
]
operations = [
# 创建OAuth配置表
migrations.CreateModel(
name='OAuthConfig',
fields=[
# 主键字段 - 使用BigAutoField作为自增主键
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('type', models.CharField(choices=[('weibo', '微博'), ('google', '谷歌'), ('github', 'GitHub'), ('facebook', 'FaceBook'), ('qq', 'QQ')], default='a', max_length=10, verbose_name='类型')),
# OAuth类型字段 - 使用选择框限定支持的第三方登录类型
('type', models.CharField(
choices=[('weibo', '微博'), ('google', '谷歌'), ('github', 'GitHub'), ('facebook', 'FaceBook'),
('qq', 'QQ')], default='a', max_length=10, verbose_name='类型')),
# AppKey字段 - 存储OAuth应用的密钥标识
('appkey', models.CharField(max_length=200, verbose_name='AppKey')),
# AppSecret字段 - 存储OAuth应用的密钥
('appsecret', models.CharField(max_length=200, verbose_name='AppSecret')),
('callback_url', models.CharField(default='http://www.baidu.com', max_length=200, verbose_name='回调地址')),
# 回调地址字段 - 默认设置为百度首页
('callback_url',
models.CharField(default='http://www.baidu.com', max_length=200, verbose_name='回调地址')),
# 启用状态字段 - 控制该OAuth配置是否可用
('is_enable', models.BooleanField(default=True, verbose_name='是否显示')),
# 创建时间字段 - 自动记录创建时间
('created_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='创建时间')),
# 最后修改时间字段 - 自动记录最后修改时间
('last_mod_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='修改时间')),
],
options={
# 管理后台显示名称
'verbose_name': 'oauth配置',
'verbose_name_plural': 'oauth配置',
# 默认排序规则 - 按创建时间倒序
'ordering': ['-created_time'],
},
),
# 创建OAuth用户表
migrations.CreateModel(
name='OAuthUser',
fields=[
# 主键字段
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
# 第三方平台用户唯一标识
('openid', models.CharField(max_length=50)),
# 用户在第三方平台的昵称
('nickname', models.CharField(max_length=50, verbose_name='昵称')),
# OAuth访问令牌 - 可为空
('token', models.CharField(blank=True, max_length=150, null=True)),
# 用户头像URL - 可为空
('picture', models.CharField(blank=True, max_length=350, null=True)),
# OAuth类型 - 标识来自哪个第三方平台
('type', models.CharField(max_length=50)),
# 用户邮箱 - 可为空
('email', models.CharField(blank=True, max_length=50, null=True)),
# 元数据字段 - 存储额外的用户信息JSON格式
('metadata', models.TextField(blank=True, null=True)),
# 创建时间
('created_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='创建时间')),
# 最后修改时间
('last_mod_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='修改时间')),
('author', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='用户')),
# 外键关联到本地用户 - 建立第三方账号与本地账号的关联
('author', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE,
to=settings.AUTH_USER_MODEL, verbose_name='用户')),
],
options={
# 管理后台显示名称
'verbose_name': 'oauth用户',
'verbose_name_plural': 'oauth用户',
# 默认排序规则
'ordering': ['-created_time'],
},
),
]
]
Loading…
Cancel
Save