iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Django auth组件
  • 814
分享到

Django auth组件

组件Djangoauth 2023-01-30 22:01:14 814人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

目录 一.认证系统 二.用户对象 1.创建用户 2.用户认证 4.注销用户 5.判断用户是否登录

目录

  • 一.认证系统
  • 二.用户对象
    • 1.创建用户
    • 2.用户认证
    • 4.注销用户
    • 5.判断用户是否登录
    • 6.登录认证装饰器
    • 7.创建普通用户和超级用户
    • 8.校验密码
    • 9.修改密码
    • 10.is_staff和is_active
  • 三.扩展默认的auth_user表

一.认证系统

Django自带一个用户认证系统,用于处理用户账户、群组、许可和基于cookie的用户会话。
DjanGo的认证系统主要包含:
    1.用户
    2.许可
    3.组
    4.可配置的密码哈希系统
    5.用于用户登录或者限制访问的表单和视图工具
    6.可插拔的后台系统

二.用户对象

用户对象是Django认证系统的核心,需要导入auth模块,该模块存在于django.contrib下

from django.contrib import auth

Django的认证框架只有一个用户模型,就是User模型,它位于django.contrib.auth.models下.

用户模型主要有下面几个字段:

  • username
  • passWord
  • email
  • first_name
  • last_name

1.创建用户

from django.contrib.auth.models import User
user = User.objects.create_user(name='yven',password='123456')
user.last_name = 'law'
user.save()

2.用户认证

提供的用户认证功能就是验证用户名以及密码是否正确,如果认证成功,便返回一个User对象,authenticate()会在该User对象上设置一个属性来标识后端已经认证了该用户,且该信息在后续的登录过程中是需要的

user = auth.authenticate(request,username=name,password=pwd)
相当于查询:user=models.User.objects.filter(name=name,pwd=pwd).first()

3.用户登录

该函数接收一个HttpRequest对象和一个User对象参数,该方法会把用户的ID保存在Django的session中,一旦登录成功,函数中的request对象中,就会有一个user对象,就是当前登录的用户对象,如果没有登录,request.user=AnonymousUser,匿名用户

from django.contrib.auth import authenticate, login
def login(request):
    name = request.POST.get('name')
    pwd = request.POST.get('pwd')
    user = authenticate(username=name,password=pwd)
    if user:
        login(request,user)
        ...
    else:
        ...

4.注销用户

from django.contrib.auth import logout
def logout(request):
    logout(request)

5.判断用户是否登录

def my_view(request):
    if not request.user.is_authenticated()
        return redirect('%s?next=%s' % (settings.LOGIN_URL,requst.path))
    ...

6.登录认证装饰器

auth为我们提供了一个装饰器工具,用来快捷的给某个视图添加登录校验

from django.contrib.auth.decorators import login_required

@login_required(login_url='/login/')
def order(request):
    ...

login_url:如果没有登录,跳转到的页面,也可以通过全局设置,在settings中配置LOGIN_URL='/login/'

7.创建普通用户和超级用户

auth提供了创建新用户的方法,也提供了创建超级用户的方法,需要提供必要参数.

from django.contrib.auth.models import User
user = User.objects.create_user(username='用户名',password='密码'..)
superuser = User.objects.create_superuser(username='用户名',password='密码'..)

8.校验密码

auth提供一个检查密码是否正确的方法。正确返回true,错误false。

bool = request.user.check_password('密码)

9.修改密码

auth提供了一个修改密码的方法set_password,接收要设置新密码作为参数,设置完一定要调用用户对象的save()方法

request.user.set_password(password='新密码')
user.save()

10.is_staff和is_active

is_staff:用户是否拥有网站的管理权限。

is_active:是否允许用户登录,设置为False,可以在不删除用户的前提下禁止用户登录。

三.扩展默认的auth_user表

虽然内置的认证系统很好用,但是auth_user表的字段只有固定的几个,实际的应用中需要的字段更多,所以需要对默认的auth_user表进行扩展,第一时间想到的方法是新建另外一张表通过一对一和内置的auth_user表关联,这样的确可以满足要求,但是其实可以更好,就是通过继承内置的AbstractUser类,来定义一个自己的Model类。

from django.contrib.auth.models import AbstractUser
class UserInfo(AbstractUser):
    phone = models.CharField(max_length=255)
    address = models.CharField(max_length=255)

通过这种方法扩展内置的auth_user表之后,一定要在settings.py中告诉Django现在使用新定义的UserInfo表来做用户认证。

AUTH_USER_MODEL = 'app名.UserInfo'

一旦我们指定了新的认证系统所使用的表,我们就需要重新在数据库中创建该表,而不能继续使用原来默认的auth_user表了。

--结束END--

本文标题: Django auth组件

本文链接: https://www.lsjlt.com/news/180361.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Django auth组件
    目录 一.认证系统 二.用户对象 1.创建用户 2.用户认证 4.注销用户 5.判断用户是否登录 ...
    99+
    2023-01-30
    组件 Django auth
  • Django之auth组件
    一、Auth模块是什么   django内置的用户认证系统 ,可以快速 的实现,登录,注销,修改密码... 二、Auth用法:   1、先创建超级用户 :      python3 manage.py createsuperuser; ...
    99+
    2023-01-30
    组件 Django auth
  • Django 开发拓展 auth 模块,
    原因 使用局部钩子函数 _clean_fields() 对 username、email 字段进行验证时,未返回,具体请参考 _clean_fields() 函数源码。 def clean_username(self): """...
    99+
    2023-01-30
    模块 Django auth
  • Django-admin组件
    知识预览 Django 如何使用admin组件来对后台数据进行管理的? Django admin如何实现后台数据管理的?(admin源码解析) 如何仿照admin实现一个自定义的增删改查的组件? ...
    99+
    2023-01-30
    组件 Django admin
  • Django之forms组件
      一、校验数据功能   我们在写注册页面时,之前只是提交了数据,然后就保存了数据,后端根本就没有对数据进行校验,比如价格写的不是纯数字也让保存,这肯定是不行的,在前端是可以校验的,但我们不能只依靠前端验证,万一前端不校验,那整个过程就没...
    99+
    2023-01-30
    组件 Django forms
  • Django之Form组件
    一 Form介绍      我们之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来。   与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用户是否输入,输入的长度...
    99+
    2023-01-30
    组件 Django Form
  • Django权限系统auth模块用法解读
    目录认证系统auth auth模块User对象User新建用户认证用户修改密码登录退出登录只允许登录的用户访问GroupPermission检查用户权限管理用户权限自定义权...
    99+
    2023-05-12
    Django权限系统 Django auth模块 Django权限系统auth模块
  • Django之频率组件
    一、频率简介 为了控制用户对某个url的请求 的频率,比如 ,一分钟以内,只能访问三次 二、自定义频率类,自定义频率规则 自定义的逻辑 (1)取出访问者的ip (2)判断当前ip不在访问字典里,添加进去,并且直接返回True,表示第一...
    99+
    2023-01-30
    组件 频率 Django
  • django组件--cookie与session
    django组件--cookie与session什么是会话跟踪技术在一个会话的多个请求中共享数据,这就是会话跟踪技术。例如在一个会话中的请求如下: 请求银行主页; 请求登录(请求参数是用户名和密码);请求转账(请求参数与转账相关的...
    99+
    2023-01-30
    组件 django session
  • Django中auth模块用户认证的使用
    目录auth模块是什么auth模块常用方法authenticate()login(HttpRequest, user)logout(request)is_authenticated(...
    99+
    2023-03-20
    Django auth模块用户认证 Django auth模块
  • Django中auth模块用户认证如何使用
    本文小编为大家详细介绍“Django中auth模块用户认证如何使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“Django中auth模块用户认证如何使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。auth模...
    99+
    2023-07-05
  • Django框架CBV装饰器中间件auth模块CSRF跨站请求问题
    CBV添加装饰器 给CBV添加装饰器有三种方法,三种方法都需要导入模块: from django.utils.decorators import method_decorator...
    99+
    2024-04-02
  • Django框架基础认证模块auth应用示例
    目录1. auth介绍2. autho常用操作2.1 创建用户2.2 验证用户2.3 验证用户是否登录2.4 已验证的用户想附加到当前会话2.5 快捷增加登录校验装饰器2.6 退出登...
    99+
    2024-04-02
  • django中的auth模块与admin后台管理方法
    目录1. auth模块1.1 auth模块的常用方法1.2 如何扩展auth_user表2.admin后台管理2.1 admin后台管理的准备工作2.2 为admin后台设置样式和增...
    99+
    2024-04-02
  • Django框架基础认证模块auth这么应用
    本文小编为大家详细介绍“Django框架基础认证模块auth这么应用”,内容详细,步骤清晰,细节处理妥当,希望这篇“Django框架基础认证模块auth这么应用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。1. ...
    99+
    2023-06-29
  • Django之用户认证组件
      用户认证组件用的是Django自带一个表:auth_user   一、auth模块   1,authenticate()判断用户是否存在方法 user=authenticate(username='xxx',password='xx...
    99+
    2023-01-30
    组件 用户 Django
  • Django中ContentType组件怎么用
    这篇文章将为大家详细讲解有关Django中ContentType组件怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。问题如何在一张表上对多个表进行外键关联from django.db&nbs...
    99+
    2023-06-21
  • Django中如何使用 Form组件
    Django中如何使用 Form组件,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。为什么需要Form组件注:Form组件,只适用于,前后端...
    99+
    2024-04-02
  • 如何使用Django默认的Auth权限管理系统
    目录1.Django默认已经提供了认证系统Auth模块。2.Django用户模型3.自定义User对象1.Django默认已经提供了认证系统Auth模块。 认证系统包含: 用户管理权...
    99+
    2023-02-13
    Django Auth权限管理系统 Django 权限管理系统
  • Django学习之八:forms组件【对
    目录 Django forms组件 bound and unbound form instance forms渲染有关 隐藏一个字段...
    99+
    2023-01-30
    组件 Django forms
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作