django怎么读(django的auth模块学习)
导读:auth 1.我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统。此时我们需要实现包括用户注册、用户登录、用户认证、注销、修改密码等功能,这还真是个麻烦的事情呢。 2.Django作为一个完美主义者的终极框架,当然也会想到用户的这些痛点。它内置了强大的用户认证系统–auth,它默认使用...
auth
1.我们在开发一个网站的时候 ,无可避免的需要设计实现网站的用户系统 。此时我们需要实现包括用户注册 、用户登录 、用户认证 、注销 、修改密码等功能 ,这还真是个麻烦的事情呢 。 2.Django作为一个完美主义者的终极框架 ,当然也会想到用户的这些痛点 。它内置了强大的用户认证系统–auth ,它默认使用 auth_user 表来存储用户数据 。Django默认已经提供了认证系统Auth模块 ,我们认证的时候 ,会使用auth模块里面给我们提供的表 。认证系统包含:
用户管理 权限 用户组 密码哈希系统 用户登录或内容显示的表单和视图 一个可插拔的后台系统 adminDjango用户模型类
Django认证系统中提供了用户模型类User保存用户的数据 ,默认的User包含以下常见的基本字段:
字段名 字段描述 username 必选 。150个字符以内 。 用户名可能包含字母数字 ,_ ,@ ,+ . 和-个字符 。 first_name 可选(blank=True) 。 少于等于30个字符 。 last_name 可选(blank=True) 。 少于等于30个字符 。 email 可选(blank=True)。 邮箱地址 。 password 必选 。 密码的哈希加密串。 (Django 不保存原始密码) 。 原始密码可以无限长而且可以包含任意字符 。 groups 与Group 之间的多对多关系 。 user_permissions 与Permission 之间的多对多关系 。 is_staff 布尔值 。 设置用户是否可以访问Admin 站点 。 is_active 布尔值 。 指示用户的账号是否激活 。 它不是用来控制用户是否能够登录 ,而是描述一种帐号的使用状态 。 is_superuser 是否是超级用户 。超级用户具有所有权限 。 last_login 用户最后一次登录的时间 。 date_joined 账户创建的时间。 当账号创建时 ,默认设置为当前的date/time 。重要方法
Django 用户认证(Auth)组件需要导入 auth 模块
# 认证模块 from django.contrib import auth # 对应数据库用户表,可以继承扩展 from django.contrib.auth.models import User 用户对象 create() # 创建一个普通用户,密码是明文的 。 create_user() # 创建一个普通用户 ,密码是密文的。 create_superuser() # 与create_user() 相同 ,但是设置is_staff 和is_superuser 为True 。 set_password(*raw_password*) # 设置用户的密码为给定的原始字符串,并负责密码的 。 不会保存User对象 。当None为raw_password时 ,密码将设置为一个不可用的密码 。 check_password(*raw_password*) # 如果给定的raw_password是用户的真实密码 ,则返回True ,可以在校验用户密码时使用 。 认证方法 auth.authenticate(username,password) # 将输入的密码转为密文去认证 ,认证成功返回用户对象 ,失败则返回None 登录和注销方法 from django.contrib import auth # 该函数接受一个HttpRequest对象 ,以及一个认证了的User对象 。此函数使用django的session框架给某个已认证的用户附加上session id等信息 。 auth.login() # 该函数接受一个HttpRequest对象 ,无返回值 。当调用该函数时 ,当前请求的session信息会全部清除 。该用户即使没有登录 ,使用该函数也不会报错 。 auth.logout() from django.contrib.auth.models import User User.objects.create(username="Zitty", password="127717") # 不可用 密码不是加密的 User.objects.create_user(username="Zitty", password="127717") # 创建普通用户 密码自动加密 user_obj = auth.authenticate(request, username=username, password=password) auth.login(request, user_obj)#保存用户登录状态 request.user.is_authenticated()#判断当前用户是否登录 request.user.check_password(old_password)#校验原密码是否正确 #修改密码 request.user.set_password(new_password) request.user.save() #千万不要忘了保存 request.user Django有一个默认中间件 ,叫做AuthenticationMiddleware ,每次请求进来都会去session中去一个userid ,取不到的话,赋值request.user = AnonymousUser() , 一个匿名用户对象 。 当用户组件auth.login一旦执行 ,将userid到session中后 ,再有请求进入Django,将注册的userid对应的user对象赋值给request.user,即再后面的任何视图函数中都可以从request.user中取到该客户端的登录对象 。 自定义用户表from django.contrib.auth.models import AbstractUser
设置Auth认证模块使用的用户模型为我们自己定义的用户模型
格式:“子应用目录名.模型类名 ”
AUTH_USER_MODEL = users.User
创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!