Django之用户认证组件

12345huangchun 2019-01-13 原文

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 

 

发表于 2019-01-13 15:23 W的一天 阅读() 评论() 编辑 收藏

 

版权声明:本文为12345huangchun原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/12345huangchun/p/10262660.html

Django之用户认证组件的更多相关文章

随机推荐

  1. Android颜色大全

    <?xml version="1.0" encoding="utf-8"?> <resour […]...

  2. python基础(9)增强型赋值与使用普通赋值的区别

    前言 增强型赋值语句是经常被使用到的,因为从各种学习渠道中,我们能够得知i += 1的效率往往要比 i = i […]...

  3. configfs_sample.c 理解

    1. 编译运行 代码从如下链接获得: https://github.com/torvalds/linux/bl […]...

  4. 定义变量的三种方式

    定义变量的三种方式 定义变量的三种方式var、const、let 都可以用来定义变量,但三者之间存在区别。va […]...

  5. Flowable与springBoot项目整合及出现的问题

    Flowable与springBoot项目整合及出现的问题 单纯地将Flowable和springBoot整合 […]...

  6. javaweb返回json对象

    1.准备   json-lib-2.4-jdk15:这个第三方jar包(版本随便,这里版本是2.4)   此外 […]...

  7. First:安装配置JDK and 部署Tomcat

    (一)准备 百度云地址(win,64Bit): 1.tomcat(7.0):链接:https://pan.ba […]...

  8. 个体崛起,CRMEB小程序直播+电商,你准备好了吗?

    2020新年我们经历了一场前所未有的新型冠状肺炎疫情,在这场突如其来的疫情面前,冲在最前线的医生护士,舍身救人 […]...

展开目录

目录导航