Django之auth组件

auth模块

概述:

  开发一个网站的时候,是肯定要设计实现网站的用户系统。此时需要我们自己实现登录、认证、注销、修改密码等操作,django它内置了用户认证系统auth。

1 from django.contrib import auth

auth中方法:

authenticate()

  认证当前用户

1 user = authenticate(username=‘sb‘,password=‘123456‘)

login(HttpRequest, user) 

  该函数接受一个HttpRequest对象,以及一个经过认证的User对象。

  该函数实现一个用户登录的功能。它本质上会在后端为该用户生成相关session数据。

 1 from django.contrib.auth import authenticate, login
 2
 3 def my_view(request):
 4   username = request.POST[‘username‘]
 5   password = request.POST[‘password‘]
 6   user_obj = authenticate(username=username, password=password)
 7   if user_obj:
 8     login(request, user_obj)
 9     # Redirect to a success page.
10     ...
11   else:
12     # Return an ‘invalid login‘ error message.
13     ...

  注意:只要使用login(request, user_obj)之后,request.user就能拿到当前登录的用户对象。否则request.user得到的是一个匿名用户对象(AnonymousUser Object)。

logout(request)

  该函数接受一个HttpRequest对象,无返回值。

  当调用该函数时,当前请求的session信息会全部清除。该用户即使没有登录,使用该函数也不会报错。

1 from django.contrib.auth import logout
2
3 def logout_view(request):
4   logout(request)
5   # Redirect to a success page. 

is_authenticated()

  判断当前请求是否通过认证

1 def my_view(request):
2   if not request.user.is_authenticated():
3     return redirect(‘%s?next=%s‘ % (settings.LOGIN_URL, request.path))

login_requierd()

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

1 from django.contrib.auth.decorators import login_required
2
3 @login_required
4 def my_view(request):
5   ...

  若用户没有登录,则会跳转到django默认的 登录URL ‘/accounts/login/ ‘ 并传递当前访问url的绝对路径 (登陆成功后,会重定向到该路径)。

  如果需要自定义登录的URL,则需要在settings.py文件中通过LOGIN_URL进行修改。

create_user()

from django.contrib.auth.models import User
user = User.objects.create_user(username=‘用户名‘,password=‘密码‘,email=‘邮箱‘,...)

create_superuser()

from django.contrib.auth.models import User
user_obj = User.objects.create_superuser(username=‘用户名‘,password=‘密码‘,email=‘邮箱‘,...)

check_password(raw_password)

  auth 提供的一个检查密码是否正确的方法,需要提供当前请求用户的密码。

  密码正确返回True,否则返回False。

set_password(raw_password)

  auth 提供的一个修改密码的方法,接收 要设置的新密码 作为参数。

  注意:设置完一定要调用用户对象的save方法!!!

1 user_obj.set_password(‘123456‘)
2 user_obj.save()

自定义auth_user表

 1 from django.contrib.auth.models import AbstractUser
 2 class UserInfo(AbstractUser):
 3     """
 4     用户信息表
 5     """
 6     nid = models.AutoField(primary_key=True)
 7     phone = models.CharField(max_length=11, null=True, unique=True)
 8
 9     def __str__(self):
10         return self.username

在settings配置

1 # 引用Django自带的User表,继承使用时需要设置
2 AUTH_USER_MODEL = "app01.UserInfo" 

  自定义好了我们当然可以使用表了

普通用户:

1 UserInfo.objects.create_user(nid=1, password=123456)

超级用户:

1 UserInfo.objects.create_superuser(nid=1, password=123456)

注意:

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

原文地址:https://www.cnblogs.com/Alexephor/p/11310486.html

时间: 2024-11-03 12:44:35

Django之auth组件的相关文章

Django框架-Auth组件

Django自带的用户认证 我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统,此时我们需要实现包括用户注册,用户登录,用户认证,注销,修改密码等功能,这真是一个麻烦的事情. django作为一个完美主义者的终极框架,当然也会想到用户的这些疼点,因此它内置了强大的用户认证系统--auth,它默认使用auth_user表来存储用户数据. auth模块 auth本质就是一个django的app,里面也有views,models等. from django.contrib import a

Django之auth认证组件

原文链接:https://www.jianshu.com/p/612b3d76a1f5 Django之auth组件 前言:我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统. 此时我们需要实现包括用户注册.用户登录.用户认证.注销.修改密码等功能,这还真是个麻烦的事情呢. Django作为一个完美主义者的终极框架,当然也会想到用户的这些痛点.它内置了强大的用户认证系统--auth,它默认使用 auth_user 表来存储用户数据. auth中提供的实用方法: - 创建用户 pytho

Django Auth组件

Auth组件 Author组件是Django自带的认证系统,包括登录校验,用户信息数据库表,以及修改用户权限,用户注销.给用户增加sesion等一切认证功能 导入auth模块 from django.contrib import auth 用户信息 在django项目创建开时,运行python manage.py migrations 和 python manage.py mirate 两个命令后django会自动创建django本身需要的数据库表和你自定义创建的数据库表,而Auth组件中的au

django第13天(auth组件,forms组件)

django第13天(auth组件,forms组件) auth组件 -auth组件 -auth是什么? -django内置的用户认证系统,可以快速的实现,登录,注销,修改密码.... -怎么用? -(1)先创建超级用户: -python3 manage.py createsuperuser -输入用户名,邮箱(可以不输入),密码,敲回车,这样就创建出一个超级用户 -也就是在auth_user这个表中插入了一条数据(密码是加密的,所以我不能手动插入) -(2)验证用户: -from django.

Django之auth模块(用户认证)登陆组件

auth模块简介 auth模块是对登录认证方法的一种封装,之前我们获取用户输入的用户名及密码后需要自己从user表里查询有没有用户名和密码符合的对象, 而有了auth模块之后就可以很轻松的去验证用户的登录信息是否存在于数据库中. 除此之外,auth还对session做了一些封装,方便我们校验用户是否已登录 auth里的方法 如果想使用auth模块的方法,必须要先导入auth模块 from django.contrib import auth django.contrib.auth中提供了许多方法

Django auth组件拓展 关联外部信息---------------------------- Profile 模式

from django.db import models   from django.contrib.auth.models import User   GENDER_CHOICES = (                                      ('M', '男'),                                       ('F', '女'),                                       )   class UserPro

10.Django用户认证组件

用户认证组件: 功能:用session记录登录验证状态: 前提:用户表,django自带的auth_user 创建超级用户:python manage.py createsuperuser           kris的密码是abc123456 基于用户认证组件的登录验证信息储存 views.py from django.shortcuts import render, HttpResponse, redirect # Create your views here. from django.co

django安全认证组件

创建超级用户的方法 第一步要先进行数据迁移,生成默认的auth_user表 1,python manager.py makemigrations 2, python manager.py migrate 第二步,创建超级用户,会存储在auth_user表中 python manager.py createsuperuser 执行完命令按照提示逐步完善信息,超级用户的密码会以md5加密的方式存储在auth_user表中,其他信息都是明文显示 django用户安全认证组件 1,引入模块 from d

16 django用户认证组件

django用户认证组件 思考: 前一篇提到的seesion,当用户登录后会保存session. 浏览器再次访问会带上服务器返回的session:sessionid ---> 登录时随机生成的key 服务器拿到sessionid后去数据库匹配,匹配到后拿到一个字典数据:{a:b,c:d} 当数据有变化时,会更新某个值,如 c:d --> c:e ,那么直接更新数据库 {a:b,c:e},sessionid并不会变化,然后将原来的sessionid继续回传给浏览器. 这样的处理机制存在什么样的问