专栏首页python3Django之用户认证组件

Django之用户认证组件

  用户认证组件用的是Django自带一个表:auth_user

  一、auth模块

  1,authenticate()判断用户是否存在方法

user=authenticate(username='xxx',password='xxxx')   #需要提供两个参数,username,password关键字参数
如果auth_user表中存在这个用户,会返回一个user对象,如果用户不存在,返回None

  2,login(request,user)

login(request,user)主要完成以下:把用户的id放入session表中的数据里
1,注入session信息:request.session['user_id']=user.pk

from django.contrib.auth import authenticate, login
   
def my_view(request):
  username = request.POST['username']
  password = request.POST['password']
  user = authenticate(username=username, password=password)
  if user is not None:
    login(request, user)
    # Redirect to a success page.
    ...
  else:
    # Return an 'invalid login' error message.

  3,logout(request)注销用户

from django.contrib.auth import logout
   
def logout_view(request):
  logout(request)         #注销只是session表里的登录记录,并不是注销的auth_user表的记录
  # Redirect to a success page.

  二、user对象

  只要登录过的用户,访问任何视图的时候都可以使用request.user对象,这就是一个user对象,request.user.name就可以拿到用户的名字,request.user.email就可以得到用户的邮箱,还可以拿到用户的其他信息。除此之外,user对象还拥有以下方法:

  1,user对象的is_authenticated()

  如果session表里有你的登录记录,那返回值为True,可以用来验证用户是否登录过。

  1.1 我们可以自己在每个需要判断的是否登陆过才能访问的视图里面手动写上判断,而且登陆后直接返回最开始请求的页面。

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

  1.2 Django自己给我们封装一个装饰器,用来判断用户是否登录过,就和我们用session写的装饰器一样的,只是现在也是登录成功后返回最开始的页面。

from django.contrib.auth.decorators import login_required
      
@login_required
def my_view(request):

  2,在auth_user表中添加记录,相当于添加一个用户

from django.contrib.auth.models import User
User.objects.create_user(username='',password='')
User.objects.create_superuser(username="alex",password="123")

  3,check_password(password)

  用户需要修改密码之前,首先得让他输入原来的密码,如果输入正确返回True,否则返回None,当返回True时,才允许修改密码

  4,set_password()修改密码

user = User.objects.get(username='')
user.set_password(password='')
user.save 

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • discuz X3登录流程分析

    公司最近要将discuz论坛升级至最新版discuz X3。但是公司要用自己的通行证同步登陆。故必须要知道discuzX3的登录流程及原理,才能进行二次开发。

    py3study
  • rest_framework -- 认证

    py3study
  • python3配置文件的增删改查,记录一

    py3study
  • 15.Django基础十一之认证系统

      我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统。此时我们需要实现包括用户注册、用户登录、用户认证、注销、修改密码等功能,这还真是个麻烦的事情...

    changxin7
  • django自关联,auth模块

    1.表内自关联是指表内数据相关联的对象和表是相同字段,这样我们就直接用表内关联将外键关联设置成自身表的字段

    小小咸鱼YwY
  • 五. Spring Security 权限管理

    一斤代码
  • Django学习(第五天:Django中的MTV模型)

    罗罗攀
  • Windows下搭建Eclipse+Android4.0开发环境

    原文地址:http://blog.csdn.net/yzhj2005/article/details/6980676/

    乔达摩@嘿
  • 从成绩平平到保送清华,如何变身“别人家的神童”?

    ? 80 90后想被清北复交等名校保送 如果没有学霸体质 大概会想到 “新概念作文” “国际奥数联赛” “全国物理竞赛” ? 当这届00后渐渐长大 保送也有了...

    鹅老师
  • 通过 Serverless Components Koa 构建后台服务

    Serverless Components 是支持多个云资源编排和组织的场景化解决方案,主要基于客户的具体场景,如 Express 框架支持、网站部署等。Ser...

    issac

扫码关注云+社区

领取腾讯云代金券