• auth用户认证模块


    auth模块

    用auth模块 就一定要用它本身提供的一些查询,检索,修改,校验的方法

    自带的admin管理后台中创建管理员用户,普通用户

    (tools菜单中的run manager.py选项下输入)
    
    如何创建超级用户 用于登录django admin的后台管理
        createsuperuser
        
    	createuser  #普通用户
    
    

    auth基本使用语法

    (views.py中)
    
    
    from django.contrib import auth
    from django.contrib.auth.models import User
    
    校验用户是否存在
    user_obj = auth.authenticate(username=username,password=password)  # 返回的是数据对象
    																   # 没有返回None
    # is_alive = User.objects.filter(username=username) #通过orm查找
    
    
    #保存用户登录状态
    auth.login(request,user_obj)# 执行完这一句之后 只要是能够拿到request的地方 
                                # 都可以通过request.user获取到当前登录用户对象
        
                """该方法会主动帮你操作session表 并且只要执行了该方法
                你就可以在任何位置通过request.user获取到当前登录的用户对象
                """
    
    # 简单快捷的判断用户是否登录        
    print(request.user.is_authenticated())  
    
    
    # 校验原密码对不对
    is_right = request.user.check_password(old_password)
    
    
    # 修改密码
    request.user.set_password(new_password)  # 仅仅只会在内存中产生一个缓存 并不会直接修改数据库
    request.user.save()  # 一定要点save方法保存 才能真正的操作数据库
    
    # User.objects.create(username=username,password=password)  
    # 不用使用create 密码会直接存成明文
    
    # 创建普通用户
    User.objects.create_user(username=username,password=password)  
      
    # 创建超级用户  邮箱字段必须填写  
    User.objects.create_superuser(username=username,password=password,email='123@qq.com') 
            
     
    
    

    auth模块自带登陆装饰器

    (views.py中)
    
    
    
    from django.contrib.auth.decorators import login_required
    
    # @login_required(login_url='/login/')  # 局部配置,直接加在函数上,和普通装饰器一样
    
    # auth校验用户是否登录 全局配置跳转url
    LOGIN_URL = '/login/'   #在setings.py中加入
    
    @login_required
    def set_password(request):
        ..
    

    当我们使用auth用户认证模块,在表中想要加字段可以继承AbstractUser来实现,自动生成User也是继承了这个.

    (models.py中)
    
    from django.contrib.auth.models import AbstractUser
    # Create your models here.
    
    class Userinfo(AbstractUser):
        """
        强调 你继承了AbstractUser之后 你自定义的表中 字段不能跟原有的冲突
        """
        phone = models.BigIntegerField()
        avatar = models.FileField()
        register_time = models.DateField(auto_now_add=True)
    
    
    # auth自定义表配置  (在settings.py任意位置加入)
    AUTH_USER_MODEL = 'app01.Userinfo'
    # 固定语法: AUTH_USER_MODEL = '应用名.表名'
    
  • 相关阅读:
    数据库+mysql
    网络并发项目
    网络编程 IO模型
    并发编程之死锁、进程池、协程
    类的使用
    面向对象—多态,反射
    面向对象-三大特性
    继承与派生
    面向对象
    模块进阶(二)
  • 原文地址:https://www.cnblogs.com/cheng825/p/11773856.html
Copyright © 2020-2023  润新知