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

您所在的位置:网站首页 统一用户怎么注册的 【Django】Django用户认证: 利用Django Auth模块实现用户注册、登录与登出

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

2024-07-15 11:04| 来源: 网络整理| 查看: 265

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

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

在这里插入图片描述

目录 Django用户认证: 利用Django Auth模块实现用户注册、登录与登出1 Django 用户管理机制2 Auth模块2.1 配置权限管理模块2.2 Auth模块中的用户模型 用户组模型 用户权限模型 3 Django自带的用户模型(User)介绍3.1 User模型内置字段介绍3.2 User模型内置方法 4 基于User模型的功能开发4.1 用户注册4.2 用户登录4.3 用户登出

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 Django自带的用户模型(User)介绍 3.1 User模型内置字段介绍

用户模型是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 基于User模型的功能开发 4.1 用户注册

在视图文件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 def register(request): if requesthod == 'GET': return render( request, 'basic/register.html' ) elif requesthod == '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': '被禁止的请求' }) 4.2 用户登录

在视图文件views.py中:

"""此处导入的模块和注册是一样的""" def login(request): if requesthod == 'GET': return render( request, 'basic/login.html', ) elif requesthod == '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') 4.3 用户登出 """此处导入的模块和注册是一样的""" def logout(request): logout(request) return redirect('/basuc/login')


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3