0


Django用户认证: 利用Django Auth模块实现用户注册、登录与登出

Django用户认证: 利用Django Auth模块实现用户注册、登录与登出

用户登录注册属于用户认证的一部分,Django内置了一套用户认证体系,使用起来比较方便,而且支持用户定制和拓展,足以满足任何复杂的业务需求。


1 Django 用户管理机制

Django框架中,用户权限管理被划分为三个层次:

  • 用户:系统使用者,拥有自己的权限。可被一个或多个用户组包含。
  • 用户组:对用户进行分类。同一用户组拥有相同的权限。
  • 权限:用于约束用户行为。Django中一个完整的权限除权限本身外,还包括用户和对象,即什么用户对什么对象具有什么样的权限。

2 Auth模块

Auth模块是Django框架内置的权限管理模块。利用Auth模块可以实现用户身份认证、用户组和权限管理。

2.1 配置权限管理模块

在项目配置文件settings.py中加入以下代码:

INSTALLED_APPS =['django.contrib.admin','django.contrib.auth',# 权限管理模块'django.contrib.contenttypes',# 内容管理模块]

2.2 Auth模块中的用户模型 用户组模型 用户权限模型

模块名称说明Django.contrib.auth.models.UserAuth模块中的用户模型Django.contrib.auth.models.GroupAuth模块中的组模型Django.contrib.auth.models.PermissionAuth模块中的权限模型

3 用户模型(User)介绍

3.1 User模型内置字段介绍

2.2中的用户模型是Django用户认证的核心,用户模型内置了多个字段可直接使用。
内置字段名称说明字段类型id数据库主键intpassword密码varcharlast_login最近登录时间datetimeis_superuser是否超级管理员tinyintuser_name用户账号varcharemail邮箱varcharis_staff是否登录admin后台tinyintis_active是否激活tinyintdate_joined账号创建时间datetime

3.2 User模型内置方法

内置方法名称说明authenticate(username, password)用于用户认证。认证成功,则返回一个User对象login(HttpRequest, user)用于用户登录。user参数是经过认证的User对象。登录成功后将用户身份信息记录到请求的会话对象中存储。后台使用request.user可获取当前登录的用户对象。如果未登录成功,则request.user得到的是一个匿名用户对象。is_authenticated()判断当前用户是否经过认证logout(request)清除当前请求,注销会话create_user()创建新用户,至少提供用户名和密码set_password(password)修改密码check_password(password)检查密码是否正确
上述内置方法,可以在用户校验时为我们提供巨大的方便。
用户创建项目和应用后,执行完数据迁移,后台会生成一套auth开头的用户权限数据表。

4 用户注册

在视图文件views.py中:

# # 导入模块from django.shortcuts import render, redirect
from django.http import HttpResponse, JsonResponse
from django.contrib.auth.models import User
from django.contrib.auth import authenticate, logout

defregister(request):if request.method =='GET':return render(
            request,'basic/register.html')elif request.method =='POST':# 获取参数
        user_name = request.POST.get('username','')
        pwd = request.POST.get('password','')# 用户已存在if User.objects.filter(username=user_name):return JsonResponse({'code':200,'msg':'用户已存在'})# 用户不存在else:# 使用User内置方法创建用户
            user = User.objects.create_user(
                username=user_name,
                password=pwd,
                email='[email protected]',
                is_staff=1,
                is_active=1,
                is_superuser=0)return JsonResponse({'code':200,'msg':'用户注册成功'})else:return JsonResponse({'code':403,'msg':'被禁止的请求'})

5 用户登录

在视图文件views.py中:

"""此处导入的模块和注册是一样的"""deflogin(request):if request.method =='GET':return render(
            request,'basic/login.html',)elif request.method =='POST':# 获取参数
        user_name = request.POST.get('username','')
        pwd = request.POST.get('password','')# 用户已存在if User.objects.filter(username=user_name):# 使用内置方法验证
            user = authenticate(username=user_name, password=pwd)# 验证通过if user:# 用户已激活if user.is_active:return JsonResponse({'code':200,'msg':'登录成功'})# 未激活else:return JsonResponse({'code':200,'msg':'用户未激活'})# 验证失败else:return JsonResponse({'code':403,'msg':'用户认证失败'})# 用户不存在else:return redirect('/basic/register')

6 用户登出

"""此处导入的模块和注册是一样的"""deflogout(request):
    logout(request)return redirect('/basuc/login')

以上。

标签: django python 后端

本文转载自: https://blog.csdn.net/qq_42774234/article/details/126373376
版权归原作者 勇敢牛马 不怕困难 所有, 如有侵权,请联系我们删除。

“Django用户认证: 利用Django Auth模块实现用户注册、登录与登出”的评论:

还没有评论