首页IT科技django怎么读(django的auth模块学习)

django怎么读(django的auth模块学习)

时间2025-05-05 03:29:12分类IT科技浏览4114
导读:auth 1.我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统。此时我们需要实现包括用户注册、用户登录、用户认证、注销、修改密码等功能,这还真是个麻烦的事情呢。 2.Django作为一个完美主义者的终极框架,当然也会想到用户的这些痛点。它内置了强大的用户认证系统–auth,它默认使用...

auth

1.我们在开发一个网站的时候         ,无可避免的需要设计实现网站的用户系统         。此时我们需要实现包括用户注册          、用户登录             、用户认证      、注销        、修改密码等功能                ,这还真是个麻烦的事情呢                。 2.Django作为一个完美主义者的终极框架    ,当然也会想到用户的这些痛点    。它内置了强大的用户认证系统–auth      ,它默认使用 auth_user 表来存储用户数据      。

Django默认已经提供了认证系统Auth模块                ,我们认证的时候      ,会使用auth模块里面给我们提供的表                。认证系统包含:

用户管理 权限 用户组 密码哈希系统 用户登录或内容显示的表单和视图 一个可插拔的后台系统 admin

Django用户模型类

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版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
1月20号的时政新闻有哪些(1月20日,30秒知全网,精选7个热点)