Django 之 Auth认证系统

本文介绍了Django的Auth认证系统,包括User模型的详细内容,如字段、方法及扩展方式,用户权限设置,以及登录、注销、注册相关方法。此外,还探讨了自定义用户权限和用户组权限的配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


前言

Django作为一个完美主义者的终极框架,而登录和注册几乎是每一个网站必备的部分,所以Django也封装有关于用户登录、注册有关的系统——Auth。本文即来介绍一下Auth模块


提示:以下是本篇文章正文内容,下面案例可供参考

一、Auth认证系统的介绍

Django除了内置的Admin后台管理系统,还内置了Auth认证系统。整个Auth认证系统可分为三大部分用户信息、用户权限、用户组,在数据库中分别对应auth_user、auth_permission、auth_group

二、User

1.Django内置模型User

导入:from django.contrib.auth.models import User
Django内置模型User一共定义了11个字段:

字段 说明
id int类型,自增id
passwoed varchar 类型,用户密码,默认使用pbkdf2_sha256方式来存储密码。
last_login datatime类型 最近一次登录时间,会自动改变值
is_superuser tinyint类型,是否拥有所有权限 。1为true,不填默认为否。
username varchar 类型,代表用户账户
first_name varchar 类型 姓
last_name varchar 类型 名
email varchar 类型 电子邮件
is_active tinyint类型,用户是否被激活 。1为true,不填默认为否。
is_staff tinyint类型,是否能进入Admin后台系统。1为true,不填默认为否。
date_joined datetiem类型,账号创建时间

注:在注册时,以上所有字段参数只有username是必须参数,其余皆是可选参数。如没有设置参数password,模型User就会自动调用set_unusable_password()方法为当前用户随机创建密码。

2.常见方法介绍

导入模块:from django.contrib import auth
1.authenticate(username=,password=)提供了用户认证功能,即验证用户名以及密码是否正确,一般需要username 、password两个关键字参数。如果认证成功(用户名和密码正确有效),便会返回一个 User 对象。该方法不检查is_active标志位。authenticate()会在该 User 对象上设置一个属性来标识后端已经认证了该用户,且该信息在后续的登录过程中是需要的。

User对象方法

1.is_authenticated()用来判断当前请求是否通过了认证
2.check_password(password) auth 提供的一个检查密码是否正确的方法,需要提供当前请求用户的密码。密码正确返回True,否则返回False。
3.set_password(password) auth 提供的一个修改密码的方法,接收 要设置的新密码 作为参数。注意:设置完一定要调用用户对象的save方法!!!

user = auth.authenticate(username=someone, password=old_password)
if user is not None:
    user.set_password(new_password)
    user.save()

登录、注销相关方法

导入:from django.contrib.auth import login,logout,authenticate
1.login(HttpRequest, user) 该函数接受一个HttpRequest对象,以及一个经过认证的User对象。该函数实现一个用户登录的功能。它本质上会在后端为该用户生成相关session数据
2.logout(request) 该函数接受一个HttpRequest对象,无返回值。当调用该函数时,当前请求的session信息会全部清除。该用户即使没有登录,使用该函数也不会报错。
3.login_requierd(login_url)auth 给我们提供的一个装饰器工具,,用来快捷的给某个视图添加登录校验。若用户没有登录,则会跳转到django默认的 登录login_url, 并传递当前访问url的绝对路径 (登陆成功后,会重定向到该路径)。若未指定login_url参数, 则重定向到settings.LOGIN_URL如果需要自定义登录的URL,则需要在settings.py文件中通过LOGIN_URL进行修改。
login(示例):

def userloging(request):
    if request.method=='POST':
        u=request.POST.get("username",'')
        p=request.POST.get('password','')
        if User.objects.filter(username=u):
            user=authenticate(username=u,password=p)
            if user is not None:
                if user.is_active:
                    login(request,user)
                kwargs={
   
   'id':request.user.id,'page':1}
                return redirect(reverse('article',kwargs=kwargs))
	return render(request,'user.html',locals())   

logout(示例):

def register(request):

    if request.method=='POST':
        u=request.POST.get("username",'')
        p=request
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值