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个字符
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