Django——Auth模块(用户认证模块)

1、Auth模块简介

auth模块是对登录认证方法的一种封装,之前我们获取用户输入的用户名及密码后需要自己从user表里查询有没有用户名和密码符合的对象。

而有了auth模块之后就可以很轻松的去验证用户的登录信息是否存在于数据库中。

除此之外,auth还对session做了一些封装,方便我们校验用户是否已登录。

 

2、Auth认证相关的数据库表

auth_user表就是用户表

 

3、导入auth模块

1
2
3
4
5
# 认证模块
from django.contrib import auth
 
# 对应数据库用户表,可以继承扩展
from django.contrib.auth.models import User

  

4、命令行创建超级用户:

1
python manage.py createsuperuser

  

5、用户认证的相关操作:

(1)创建用户(用户注册)

1
2
3
create():创建一个普通用户,密码是明文的。
create_user():创建一个普通用户,密码是密文的。
create_superuser():创建一个超级用户,密码是密文的,要多传一个邮箱 email 参数。

例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
from django.shortcuts import render,HttpResponse
from django.contrib import auth
from django.contrib.auth.models import User
 
def zhuce(request):
    if request.method == 'GET':
        return render(request,'zhuce.html')
    else:
        name = request.POST.get('name')
        password = request.POST.get('password')
        user = User.objects.create_user(username=name,password=password)
        # user.save()  可以不用写save()也可以创建成功
        return HttpResponse('注册成功')

  

(2)用户认证(判断用户名和密码)

1
2
# auth.authenticate(username,password)
# 将输入的密码转为密文去认证,认证成功返回用户对象,失败则返回None

例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
from django.shortcuts import render,HttpResponse
from django.contrib import auth
 
def login(request):
    if request.method == 'GET':
        return render(request,'login.html')
    else:
        name = request.POST.get('name')
        password = request.POST.get('password')
        user = auth.authenticate(username=name,password=password)
        if user:
            return HttpResponse('登录成功')
        else:
            return HttpResponse('登录失败')

  

(3)保持登录状态

1
2
3
auth.login()
 
# 该函数接受一个HttpRequest对象,以及一个认证了的User对象。此函数使用django的session框架给某个已认证的用户附加上session id等信息。

例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
from django.shortcuts import render,HttpResponse
from django.contrib import auth
 
def login(request):
    if request.method == 'GET':
        return render(request,'login.html')
    else:
        name = request.POST.get('name')
        password = request.POST.get('password')
        user = auth.authenticate(username=name,password=password)
        if user:
            auth.login(request,user)  #写session等操作并保持登录状态
            return HttpResponse('保持登录成功')
        else:
            return HttpResponse('登录失败')

  

(4)注销登录状态

1
2
3
auth.logout()
 
# 该函数接受一个HttpRequest对象,无返回值。当调用该函数时,当前请求的session信息会全部清除,若要登录则需要重新登录。该用户即使没有登录,使用该函数也不会报错。

例子:

1
2
3
4
5
6
from django.shortcuts import render,HttpResponse
from django.contrib import auth
 
def zhuxiao(request):
    auth.logout(request)
    return HttpResponse('注销成功')

  

(5)判断是否登录

1
request.user.is_authenticated()

 

 

(6)获取登录用户对象

1
2
3
4
5
6
def test(request):
    user = request.user   #获取当前登录的用户对象
    print(user)           #打印当前登录的用户对象
    print(user.username)  #打印当前登录的用户对象的用户名
    print(user.password)  #打印当前登录的用户对象的密码
    return HttpResponse('OK')

 

 

(7)检查用户的密码是否正确

1
auth 提供的一个检查密码是否正确的方法,需要提供当前请求用户的密码。密码正确返回True,否则返回False
1
2
3
4
5
def test(request):
    user = request.user
    sf = user.check_password('123456')
    print(sf)
    return HttpResponse('OK')

 

 

(8)修改密码

1
2
3
set_password(password)
 
auth 提供的一个修改密码的方法,接收要设置的新密码作为参数。注意:设置完一定要调用用户对象的save方法!!!
1
2
3
4
5
def test(request):
    user = request.user
    user.set_password('1234567'# 参数为新密码
    user.save()
    return HttpResponse('OK')

  

 

posted @   映辉  阅读(192)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示