如何在Django网站中添加身份验证?
在Web应用程序中,数据管理有两个关键要素。首先是从多个浏览器查询中保存获取的数据;其次是使用这些保存的数据来验证用户身份。会话允许我们跟踪跨多个浏览器查询的数据。等式的第二部分是使用这些会话登录用户。
我们不能相信人们就是他们声称的那个人,所以我们必须在过程中验证他们的身份。当然,Django包含执行这些和其他典型任务的工具。Django的用户身份验证系统管理用户帐户、组、权限和基于cookie的用户会话。身份验证/授权(auth/auth)系统是用于描述此系统的术语。
名称(auth/auth)表明处理用户通常是一个两步过程。
针对用户数据库检查用户名和密码,以验证(身份验证)此人就是他或她声称的那个人。
验证(授权)用户是否有权执行特定操作,通常是通过将用户的权限与表进行比较。
Django的auth/auth系统包含许多部分。所有这些部分都如下所示。
用户 - 您的用户是已注册您网站的人。
权限 - 这些是二进制(是/否)标记,指示用户是否允许执行特定任务。
组 - 一种以通用方式将标签和权限应用于多个用户的机制。
消息 - 用户排队和查看系统消息的简单方法。
个人资料 - 一种向用户对象添加自定义字段的方法。
Django身份验证将身份验证和授权组合到一个包中,称为身份验证系统,因为这些功能在某种程度上是相互关联的。
身份验证支持包含在django.contrib中,作为一个必须安装的Django应用程序。它默认情况下已安装,但如果您已卸载它,则需要使用以下步骤重新安装它。
验证会话框架是否已就位。当然,跟踪用户需要使用cookie,这就是使用会话框架的原因。
将'django.contrib.auth'添加到您的INSTALLED_APPS配置后,运行manage.py syncdb。
确保'django.contrib.auth.middleware.AuthenticationMiddleware'位于您的MIDDLEWARE_CLASSES设置中,位于SessionMiddleware之后。
验证用户
django.contrib.auth是一个提供身份验证功能的Django contrib模块。
必要的设置默认包含在django-admin startproject生成的settings.py文件中。
您的INSTALLED_APPS设置中包含以下两项:
'django.contrib.auth'中包含身份验证框架的核心和默认模型。
'django.contrib.contenttypes'称为Django内容类型系统,它允许您将权限与您开发的模型关联。
以及您的MIDDLEWARE配置中的以下项目:
SessionMiddleware是一个跨请求管理会话的中间件。
AuthenticationMiddleware使用会话将用户与请求关联。
在这些设置就位的情况下运行命令manage.py migrate将为auth相关模型提供相应的数据库表,并为已安装应用程序中配置的任何模型提供权限。
Authenticate() 方法
我们可以使用authenticate()方法来验证一组凭据。它接收用户名和密码,并针对每个凭据进行身份验证检查。如果提供的凭据对后端有效,则返回用户对象。如果不是,则引发PermissionDenied错误,并返回None。
from django.contrib.auth import authenticate user=authenticate(username=’john’,password=’passwordjohn’) if user is not None: #backend has authenticated the given data else: #no backend has authenticated the given data
上面提供的方法是一种低级身份验证方法。
下面可以看到登录期间用户输入数据身份验证的示例。
def login(request): if request.method == 'POST': name = request.POST['name'] password = request.POST['password'] user = auth.authenticate(username=name,password=password) if user is not None: auth.login(request,user) messages.info(request,'You Have Successfully LogedIn') return redirect('/') else: messages.info(request,'Invalid Details') return redirect('login') else: return render(request, 'login.html')
通过这种方式,可以对用户输入的数据执行身份验证。
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP