zoukankan      html  css  js  c++  java
  • Django-auth模块

    一、什么是auth模块:

    auth模块是Django自带的用户认证模块,我们在开发网站的时候,无可避免的需要设计实现网站的用户系统,此时我们需要实现包括用户注册,用户登录,用户认证,注销,修改密码等功能,这还真是比较麻烦的事情呢!!!

    同时,Django最为一个完美主义者的终极框架,当然也会想到用户的这些情况。由此用户认证系统auth就出现了!

    二、auth模块的常用方法:

    1.创建用户:

    from django.contrib.auth.models import User
    User.objects.create(username=username,password=password)  # 不可用  密码不是加密的
    User.objects.create_user(username=username,password=password)  # 创建普通用户密码自动加密
    User.objects.create_superuser(username=username,password=password,email='123@qq.com')  # 创建超级用户需要邮箱数据

    2.校验用户名和密码是否正确:

    from django.contrib import auth
    user_obj = auth.authenticate(request,username=username,password=password)
    # 必须传用户名和密码两个参数缺一不能

    3.保存用户登录状态:

    auth.login(request,user_obj)
    # 只要这句话执行了 后面在任意位置 只要你能拿到request你就可以通过request.user获取到当前登录的用户对象

    4.判断用户登录状态:

    request.user.is_authenticated()

    5.校验原密码是否正确

    request.user.check_password(old_password)

    6.修改密码:

    request.user.set_password(new_password)
    request.user.save()  # 千万不要忘了

    7.注销:

    auth.logout(request)

    8.校验用户是否登录|装饰器

    from django.contrib.auth.decorators import login_required
    #局部配置(login_url='/login/')
        @login_required(login_url='/login/')
        def index(request):
            pass
    #全局配置(login_url='/login/')
        settings配置文件中 直接配置
        LOGIN_URL = '/login/'
        @login_required
        def index(request):
            pass
    # 如果全局配置了 局部也配置  以局部的为准

    三、如何扩展auth_user字段表

    方式一:利用一对一外键字段关系

    from django.contrib.auth.models import User
    class
    UserDetail(models.Model): phone = models.BigIntegerField() user = models.OneToOneField(to='User')

    方式二:利用继承关系(推荐使用)

    from django.contrib.auth.models import AbstractUser
    class Userinfo(AbstractUser):
      phone = models.BigIntegerField()
      register_time = models.DateField(auto_now_add=True)
    
    # 一定要注意 还需要去配置文件中配置,当在工作中,都是先进行表设计的,
    这时我们要先在创建表设置下面设置,这时Django不会自动创建auth表了!
    AUTH_USER_MODEL = 'app01.Userinfo' # 应用名.表名 # 这么写完之后 之前所有的auth模块功能全都以你写的表为准
  • 相关阅读:
    通过jQuery修改ui的顺序
    iOS用模型取代字典的好处
    iOS开发NSBundle、UIImageView和UIButton总结
    php数组中关于某个元素进行排序
    VMware 11安装Mac OS X 10.10
    js中的in_array
    localStorage中js数组的存储和读取
    google地图通过js计算当前位置与其余多个点之间的最近距离
    通过js修改图片的css样式,实现简单的图片旋转
    Javac不是内部或外部指令
  • 原文地址:https://www.cnblogs.com/mqhpy/p/11991937.html
Copyright © 2011-2022 走看看