zoukankan      html  css  js  c++  java
  • 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 
  • 相关阅读:
    Atitit 提升开发进度大方法--高频功能与步骤的优化 类似性能优化
    Atitit 翻页功能的解决方案与版本历史 v4 r49
    Atitit.pagging  翻页功能解决方案专题 与 目录大纲 v3 r44.docx
    Atitit 视图参数解决方案 oracle版和mysql版本 attilax总结.docx
    Atitit easyui翻页组件与vue的集成解决方案attilax总结
    Atitit  技术经理职责与流程表总结
    Atitit 数据库视图与表的wrap与层级查询规范
    Atitit 手机图片备份解决方案attilax总结
    Atitit 提升进度的大原则与方法  高层方法  attilax总结
    Atiitt 使用java语言编写sql函数或存储过程
  • 原文地址:https://www.cnblogs.com/12345huangchun/p/10262660.html
Copyright © 2011-2022 走看看