标签:ash imp work settings toc mic routes ref lookup
共有 认证组件、权限组件、频率组件 三大认证组件:
只有认证通过才能访问到指定的url地址,比如增删改查的操作
django的auth模块有六张表:
用户表,分组表,权限表,用户分组表,分组权限表,用户权限表
1. 游客:代表校验通过,直接进入下一步校验(权限校验)
2. 合法用户:代表校验通过,将用户存储在request.user中,再进入下一步校验(权限校验)
3. 非法用户:代表校验失败,抛出异常,返回403权限异常结果
4. 只要通过认证不管是游客还是登录用户,request.user都有值
1. 针对所有用户——》校验用户的读写权限 。如:游客只读,正规用户可读可写
2. 认证通过:可以进入下一步校验(频率认证)
3. 认证失败:抛出异常,返回403权限异常结果
1. 限制的条件(IP、id、唯一键)、频率周期时间(s、m、h)、频率的次数(3/s)
1. 没有达到限次:正常访问接口
2. 达到限次:限制时间内不能访问,限制时间达到后,可以重新访问
# admin.py--->管理员管理页面
from django.contrib import admin
from . import models
from django.contrib.auth.admin import UserAdmin as AuthUserAdmin
class UserAdmin(AuthUserAdmin):
# 添加用户页面可控制字段
add_fieldsets = (
(None, {
'classes': ('wide',),
'fields': ('username', 'password1', 'password2', 'is_staff', 'mobile'),
}),
)
# 用户列表展示页面显示字段
list_display = ('username', 'email', 'mobile', 'is_staff')
# 注册自定义User表,用admin管理,配置UserAdmin,定制化管理页面
admin.site.register(models.User, UserAdmin)
#models.py
from django.contrib.auth.models import User
# 自定义User表
from django.contrib.auth.models import AbstractUser
class User(AbstractUser):
mobile = models.CharField(max_length=11, verbose_name='电话号码', unique=True)
class Meta:
db_table = 'old_boy_user'
verbose_name_plural = '用户表'
def __str__(self):
return self.username
#settings.oy
# 自定义User表配置
AUTH_USER_MODEL = 'api.User'
表:User、Group、Permission、UG关系表、UP关系表、GP关系表
传统的RBAC有两种:权限三表:
User、Group、Permission
权限五表:
没有UP关系表
Django中Auth组件采用的是 权限六表(在传统RBAC基础上增加UP关系表)
基于Auth的权限管理认证模块(ThinkPHP)(了解)
注意: 用户管理表,一定要在第一次数据库迁移时完成
from rest_framework.routers import Route, DynamicRoute, SimpleRouter as DRFSimpleRouter
class SimpleRouter(DRFSimpleRouter):
routes = [
# List route. /资源s/
Route(
url=r'^{prefix}{trailing_slash}$',
mapping={
'get': 'list', # 群查
'post': 'create', # 单增、群增
'put': 'multiple_update', # 群整改
'patch': 'multiple_partial_update', # 群局改
'delete': 'multiple_destroy', # 群删
},
name='{basename}-list',
detail=False,
initkwargs={'suffix': 'List'}
),
# Dynamically generated list routes. Generated using
# @action(detail=False) decorator on methods of the viewset.
DynamicRoute(
url=r'^{prefix}/{url_path}{trailing_slash}$',
name='{basename}-{url_name}',
detail=False,
initkwargs={}
),
# Detail route. /资源s/(pk)/
Route(
url=r'^{prefix}/{lookup}{trailing_slash}$',
mapping={
'get': 'retrieve', # 单查
'put': 'update', # 单整改
'patch': 'partial_update', # 单局改
'delete': 'destroy' # 单删
},
name='{basename}-detail',
detail=True,
initkwargs={'suffix': 'Instance'}
),
# Dynamically generated detail routes. Generated using
# @action(detail=True) decorator on methods of the viewset.
DynamicRoute(
url=r'^{prefix}/{lookup}/{url_path}{trailing_slash}$',
name='{basename}-{url_name}',
detail=True,
initkwargs={}
),
]
# 对外提供router对象
router = SimpleRouter()
# eg: router.register('users', UserModelViewSet, basename='user')
标签:ash imp work settings toc mic routes ref lookup
原文地址:https://www.cnblogs.com/shaozheng/p/12127520.html