Django用户认证系统

简介: .权限管理Django利用auth_permission表定义权限Permission表的定义非常简单,只有三个属性:name:权限显示的名称,最多允许255个字符content_type:关联ContentType(记录App与model的信息)codename:权限的名称编码,最多允许100个字


1.用户身份认证


Django提供了authenticate方法用于对用户身份进行认证


user = authenticate(username='admin', password='admin')


如果认证成功,将会返回user对象,否则返回None


2.权限管理


Django利用auth_permission表定义权限


Permission表的定义非常简单,只有三个属性:


name:权限显示的名称,最多允许255个字符

content_type:关联ContentType(记录App与model的信息)

codename:权限的名称编码,最多允许100个字符


ea3272e2c8734ab2b207f0088d94dd64.png


3.权限的授予


首先,获取到User对象和Permission对象实例:


dahe = User.objects.get(username='dahe')

add_topic = Permission.objects.get(codename='add_topic')

change_topic = Permission.objects.get(codename='change_topic')

对于User对象实例,可以使用get_all_permissions方法查看当前它所被授予的权限:


dahe_permission = dahe.get_all_permissions()


给dahe用户添加权限:


dahe.user_permissions.add(add_topic, change_topic)
dahe_permission = dahe.get_all_permissions()



给用户删除权限:


dahe.user_permissions.remove(add_topic)


清空用户权限


dahe.user_permissions.clear()


给用户组添加、删除权限的过程与User是类似的🎶


4.权限校验


权限应用到业务系统中时,首先是给用户授予权限,之后校验用户是否拥有某项权限而决定是否能够执行某项操作


用户权限校验可以使用User实例的has_perm或has_perms方法,前者判断当前用户是否有某一项权限,后者判断用户是否同时拥有多个权限


has = dahe.has_perms(['post.add_topic', 'post.delete_topic'])
# False



目录
相关文章
|
1月前
|
Python
Django 框架的路由系统
Django 框架的路由系统
50 6
|
2月前
|
机器学习/深度学习 数据处理 数据库
基于Django的深度学习视频分类Web系统
基于Django的深度学习视频分类Web系统
66 4
基于Django的深度学习视频分类Web系统
|
2月前
|
数据库 数据库管理 Python
#736421#基于django的个人博客系统
#736421#基于django的个人博客系统
49 4
#736421#基于django的个人博客系统
|
2月前
|
机器学习/深度学习 监控 数据挖掘
基于Django和百度飞桨模型的情感识别Web系统
基于Django和百度飞桨模型的情感识别Web系统
47 5
|
2月前
|
数据库 数据库管理 Python
#73623#基于django的园区对比系统
#73623#基于django的园区对比系统
43 4
|
2月前
|
数据库 数据安全/隐私保护 数据库管理
#099473#基于django的毕业生信息管理招聘系统
#099473#基于django的毕业生信息管理招聘系统
45 4
|
2月前
|
监控 应用服务中间件 网络安全
#637481#基于django和neo4j的日志分析系统
#637481#基于django和neo4j的日志分析系统
41 4
|
2月前
|
数据库 数据安全/隐私保护 数据库管理
#765372#基于django和neo4j的通用数据展示系统
#765372#基于django和neo4j的通用数据展示系统
27 1
|
2月前
|
BI Python
基于django的代理商订单管理系统
基于django的代理商订单管理系统
25 0
|
2月前
|
数据可视化 NoSQL 数据库
#879273#基于django/neo4j的通讯录与QQ好友关系管理系统
#879273#基于django/neo4j的通讯录与QQ好友关系管理系统
23 0