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_user,auth_group,auth_permission分别存放了用户,用户组,权限的信息表,另外三张表就是多对多的关系表。
django中的加密系统(密码哈希系统)都是用的SECRET_KEY(内部是算法进行的)进行的,比如对用户的密码和用户名加密,来保证用户正确登录和授权。
****注意:django中的身份认证系统不提供密码强度检测(这个需要自定义和第三方包进行实现)、限制登录尝试(用一个中间件和自己写一个)、第三方验证(qq和微信登录等的登录)和对象级权限(在django中是模型级权限,是通用的)。
1、2 auth系统中User模型常用属性和方法
1、3 auth认证系统
*****然后进行数据迁移会自动生成一些以上有关联的表。
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
(2)web页面和跳转到web页面的view。
(3)退出页面和view,还有自定义的context(上下文)属性
(4)登录成功的显示页面
(5)安全退出后的页面
2、使用auth进行限制登录访问
2、1 使用自定义的方式来进行此功能(必须登录才能访问页面)
(1)学生页面view
(2)此时也要改变登录之后跳转的页面
2、2 使用django内置的来进行此功能(采用装饰器来实现此功能)
(1)学生页面view
(2)此时也要改变登录之后跳转的页面(和2、1的(2)一样)
(3)最重要的是要在项目目录下的settings.py写上LOGIN_URL = reverse_lazy('默认要跳转的页面')。-----from django.urls import reverse,reverse_lazy中导入,reverse_lazy
3、django内置权限系统
其功能简单的说就是分配给用户及用户组的方法,auth权限系统可以用在自己的项目中进行。
3、1 在django admin 中的权限系统(管理员进去就有auth系统)
(1)很多表都是由django自动生成,存在数据库中。
(2)最高管理员权限
(3)创建的普通用户权限
3、2 使用终端进行相应的操作
4、权限验证
4、1 检测登录的用户是否有权限去查看学生信息。
(1)学生视图
(2)无权限操作的用户跳转后显示的界面
4、2 在模板上进行权限验证
(1)首先是学生页面view
(2)登录之后的html模板页面编写代码
4、3自定义权限(不需要系统自己提供的,人类可见的字是可以自定义的,但权限名不可以自定义)
(1)首先在模型文件中自定义权限
(2)在删除学生的视图中进行检验用户是否有删除学生的权限
(3)如果无此权限的用户按删除,就会报404错误。