【一】权限
1)权限控制模型
1. ACL(Access Control List,访问控制列表)
- 将用户或组等使用者直接与对象的权限对接。
2. RBAC(Role-Based Access Control,基于角色的访问控制)
- 将用户与角色对接,然后角色与对象的权限对接。
3. ABAC(Attribute-Based Access Control,基于属性的访问控制)
- ABAC(Attribute-Based Access Control,基于属性的访问控制),又称为PBAC(Policy-Based Access Control,基于策略的访问控制),CBAC(Claims-Based Access Control,基于声明的访问控制)。
- 传统的ACL、RBAC的架构是{subject,action,object},而ABAC的架构是{subject,action,object,contextual}且为他们添加了parameter(参数)。
- subject属性:
- 比如用户的年龄、部门、角色、威望、积分等主题属性。
- action属性:
- 比如查看、读取、编辑、删除等行为属性。
- object属性:
- 比如银行账户、文章、评论等对象或资源属性。
- contextual属性:
- 比如时段、IP位置、天气等环境属性
2)django自带的admin
- admin + auth 有
rbac
的权限
用户表:auth_user
角色表:auth_group
权限表:auth_permission
用户与角色的多对多表:auth_user_groups
角色与权限的多对多表:auth_group_permission
用户与权限的多对多表:auth_user_user_permission
3)user的加密
pbkdf2_sha256$600000$hHslzR8Lw5IObVoFcjTng3$m/M9vnqT4EjNaL3C/LKEwzoEVGQOpRMU7J4G/UVoCTM=
- 加密方式
- pbkdf2_sha256
- 过期时间
- 600000
- 盐
- hHslzR8Lw5IObVoFcjTng3
- 密文
- m/M9vnqT4EjNaL3C/LKEwzoEVGQOpRMU7J4G/UVoCTM=
# 加密密码
from django.contrib.auth.hashers import make_password
eg = make_password(明文密码)
# 校验密码
from django.contrib.auth.hashers import check_password
check_password(明文密码,eg)
4)使用
-
配置
PASSWORD_HASHERS = ( 'django.contrib.auth.hashers.PBKDF2PasswordHasher', 'django.contrib.auth.hashers.PBKDF2SHA1PasswordHasher', 'django.contrib.auth.hashers.BCryptSHA256PasswordHasher', 'django.contrib.auth.hashers.BCryptPasswordHasher', 'django.contrib.auth.hashers.SHA1PasswordHasher', 'django.contrib.auth.hashers.MD5PasswordHasher', 'django.contrib.auth.hashers.CryptPasswordHasher', )
-
导入声明,使用
from django.conf import settings settings.configure(DEBUG=True) from django.contrib.auth.hashers import make_password from django.contrib.auth.hashers import check_password # 加密密码 eg = make_password('1234') print(eg) # pbkdf2_sha256$600000$tumQmh9MCqmFlQVkMVkQN8$SCV5Wwv/8WqTGOpcmKQlYFOH+fgvxYoAzptpn6nFHyA= # 校验密码 eg2 = check_password('1234', eg) print(eg2) # True