美文网首页
2019-06-19【关于django中auth模块的表】

2019-06-19【关于django中auth模块的表】

作者: warmsirius | 来源:发表于2019-07-31 09:11 被阅读0次

参考博客

auth模块相关的表

  • user表

    • User是auth模块中维护用户信息的表,在数据库中该表被命名为auth_user. 该表继承自Abstractuser.
  • group表

    • 定义用户组模型,该表只包含一个name字段和一个permissions(权限)多对多关系字段,在数据库中被命名为auth_group.
  • Permission表

    • 权限表,提供表级别的权限控制,可以检查用户是否对某个表拥有增(add),改(change),删(delete)权限。

三张表的关系

从数据库生成的表来看,这三张表实现了两两多对多的关联,

  • 其中user和group生成的第三张表是auth_user_groups
  • group和permission生成的第三张表是auth_group_permissions
  • 用户和权限生成的第三张表是auth_user_user_permissions,

下图所示

auth表.jpg

User表

在auth中user继承自AbstractUser,其中AbstractUser又继承自AbstractBaseUser和PermissionsMixin。

  • AbstractBaseUser只保存了密码和登陆时间
  • PermissionsMixin提供了权限相关的字段,比如:is_superuser和和组合权限表之间的关联。
user表.png

Group表

组提供的功能比较少,只包含一个name属性和natural_key(返回一个元组)方法。

项目中引用:

from django.contrib.auth.models import Group

将用户添加到组中:

group.user_set.add(user)  #user为一个User对象,此处为表于表之间的多对多操作

Permission表

权限系统提供一种方式去分配权限为用户或组, 默认是为Django Admin使用的,当然也可以被我们自己使用,Permission只提供表级别的‘add’\'change'\'delete’权限,而且在每张边表创建后,对应的权限会自动创建。

属性:

  • name: 权限描述别名
  • code_name: 权限描述,加上app名称后可以作为has_perm()参数
  • content_type: django用来保持app和app下表之间关系的一个表。 在django中叫做:ContentType表。

判断是否有权限

In [13]: user.has_perm('app.delete_requestreusult')   #前面为APP名称,后面为权限名

从源码中可以看出,如果是已登录的管理员在调用has_perm进行权限验证时,默认会有最高权限。

相关文章

网友评论

      本文标题:2019-06-19【关于django中auth模块的表】

      本文链接:https://www.haomeiwen.com/subject/bbzorctx.html