Auth系统(三十二)

1、Auth系统中的表

1、1 auth系统的数据表

(1)User:User是auth模块中维护用户信息的关系模式(继承了models.Model), 数据库中该表被命名为auth_user。

(2)Group:User对象中有一个名为groups的多对多字段, 多对多关系由auth_user_groups数据表维护。Group对象可以通过user_set反向查询用户组中的用户。

(3)Permission:Django的auth系统提供了模型级的权限控制, 即可以检查用户是否对某个数据表拥有增(add), 改(change), 删(delete)权限。

*******注意:查看数据库中auth_permission这张表,在里面有所有的表的一些操作权限,这些是在表创建的同时添加进来的数据。

*****注意:一个django项目使用一个虚拟环境,不能一个虚拟环境创建两个django项目。

Auth系统(三十二)_第1张图片

从表的名称我们就能看出auth_user,auth_group,auth_permission分别存放了用户,用户组,权限的信息表,另外三张表就是多对多的关系表。

django中的加密系统(密码哈希系统)都是用的SECRET_KEY(内部是算法进行的)进行的,比如对用户的密码和用户名加密,来保证用户正确登录和授权。

****注意:django中的身份认证系统不提供密码强度检测(这个需要自定义和第三方包进行实现)、限制登录尝试(用一个中间件和自己写一个)、第三方验证(qq和微信登录等的登录)和对象级权限(在django中是模型级权限,是通用的)。

1、2 auth系统中User模型常用属性和方法

Auth系统(三十二)_第2张图片

1、3 auth认证系统

Auth系统(三十二)_第3张图片
Auth系统(三十二)_第4张图片

*****然后进行数据迁移会自动生成一些以上有关联的表。

1、4 auth认证系统功能(以下是一些方法的运用)

(1)create_user 创建用户

(2)authenticate 验证登录

(3)login 记住用户的登录状态

(4)logout 退出登录

(5)is_authenticated 判断用户是否登录

(6)login_required 判断用户是否登录的装饰器

1、5 使用django默认权限系统实现登录

      在auth系统当中,django已经为我们提供了一个用户身份验证,用户组和权限管理这些功能, 那么就可以使用它来完善我们现有的这个项目.

(1)登录页面的url和view

Auth系统(三十二)_第5张图片
Auth系统(三十二)_第6张图片
Auth系统(三十二)_第7张图片

(2)web页面和跳转到web页面的view。

Auth系统(三十二)_第8张图片
Auth系统(三十二)_第9张图片

(3)退出页面和view,还有自定义的context(上下文)属性

Auth系统(三十二)_第10张图片
Auth系统(三十二)_第11张图片
Auth系统(三十二)_第12张图片

(4)登录成功的显示页面

Auth系统(三十二)_第13张图片

 (5)安全退出后的页面

Auth系统(三十二)_第14张图片

2、使用auth进行限制登录访问

2、1 使用自定义的方式来进行此功能(必须登录才能访问页面)

(1)学生页面view

Auth系统(三十二)_第15张图片
Auth系统(三十二)_第16张图片
Auth系统(三十二)_第17张图片

(2)此时也要改变登录之后跳转的页面

Auth系统(三十二)_第18张图片
Auth系统(三十二)_第19张图片

2、2  使用django内置的来进行此功能(采用装饰器来实现此功能)

(1)学生页面view

Auth系统(三十二)_第20张图片
Auth系统(三十二)_第21张图片
Auth系统(三十二)_第22张图片

(2)此时也要改变登录之后跳转的页面(和2、1的(2)一样)

(3)最重要的是要在项目目录下的settings.py写上LOGIN_URL = reverse_lazy('默认要跳转的页面')。-----from django.urls import reverse,reverse_lazy中导入,reverse_lazy

Auth系统(三十二)_第23张图片

3、django内置权限系统

其功能简单的说就是分配给用户及用户组的方法,auth权限系统可以用在自己的项目中进行

3、1 在django admin 中的权限系统(管理员进去就有auth系统)

(1)很多表都是由django自动生成,存在数据库中。

(2)最高管理员权限

Auth系统(三十二)_第24张图片

(3)创建的普通用户权限

Auth系统(三十二)_第25张图片


3、2 使用终端进行相应的操作



4、权限验证

4、1 检测登录的用户是否有权限去查看学生信息。

(1)学生视图

Auth系统(三十二)_第26张图片
Auth系统(三十二)_第27张图片
Auth系统(三十二)_第28张图片

(2)无权限操作的用户跳转后显示的界面

Auth系统(三十二)_第29张图片

4、2  在模板上进行权限验证

(1)首先是学生页面view

Auth系统(三十二)_第30张图片
Auth系统(三十二)_第31张图片
Auth系统(三十二)_第32张图片

(2)登录之后的html模板页面编写代码

Auth系统(三十二)_第33张图片


4、3自定义权限(不需要系统自己提供的,人类可见的字是可以自定义的,但权限名不可以自定义)

(1)首先在模型文件中自定义权限

Auth系统(三十二)_第34张图片
Auth系统(三十二)_第35张图片

(2)在删除学生的视图中进行检验用户是否有删除学生的权限

Auth系统(三十二)_第36张图片

(3)如果无此权限的用户按删除,就会报404错误。

你可能感兴趣的:(Auth系统(三十二))