前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Django之用户认证组件

Django之用户认证组件

作者头像
py3study
发布2020-01-21 08:15:38
5790
发布2020-01-21 08:15:38
举报
文章被收录于专栏:python3

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

  一、auth模块

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

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

  2,login(request,user)

代码语言:javascript
复制
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)注销用户

代码语言:javascript
复制
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 我们可以自己在每个需要判断的是否登陆过才能访问的视图里面手动写上判断,而且登陆后直接返回最开始请求的页面。

代码语言:javascript
复制
def my_view(request):
  if not request.user.is_authenticated():
    return redirect('%s?next=%s' % (settings.LOGIN_URL, request.path))

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

代码语言:javascript
复制
from django.contrib.auth.decorators import login_required
      
@login_required
def my_view(request):

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

代码语言:javascript
复制
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()修改密码

代码语言:javascript
复制
user = User.objects.get(username='')
user.set_password(password='')
user.save 
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/05/05 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  •   用户认证组件用的是Django自带一个表:auth_user
  •   一、auth模块
    •   1,authenticate()判断用户是否存在方法
      •   2,login(request,user)
        •   3,logout(request)注销用户
        •   二、user对象
          •   1,user对象的is_authenticated()
            •   2,在auth_user表中添加记录,相当于添加一个用户
              •   3,check_password(password)
                •   4,set_password()修改密码
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档