zoukankan      html  css  js  c++  java
  • Django之auth

    一:auth基础

    (1)作用:django提供给开发人员 对用户进行操作的模块的

    例如:登录 注册 认证 注销等等

    (2)使用方式

    from django.contrib import auth

    二:方法介绍

    (1)authenticate()

      (1)提供了用户认证功能

      (2)如果认证成功会返回一个用户对象

    <p>用户名称:<input type="text" name="username"></p>
    <p>用户密码:<input type="text" name="password"></p>
    <input type="submit">
    from django.contrib import auth
    def user(request):
        if request.method == 'POST':
            username = request.POST.get('username')
            password = request.POST.get('password')
          user_obj = auth.authenticate(username=username,password=password)
    return render(request,'user.html')

    user_obj = auth.authenticate(username=username,password=password)
            print(user_obj)   # admin 对象
            print(user_obj.username)  # admin
            print(user_obj.password) # pbkdf2_sha256$36000$qVMoNB0niRMM$Z+32NPaCez7yHBcLokJq+KSzmkdv3vetY+tFvhGCrC8= 密码

    (2)login(HttpRequest, user)

      (1)接受前端输入的数据

      (2)给前端用户设置session值

            auth.login(request,user_obj)

    PS:

      (1)只要执行此代码 就可以再任意位置获取用户对象

      (2)如果用户对象不存在 会返回一个匿名对象

    (3)is_authenticated

      (1)查看对象是否登录

      (2)如果登录返回true 反之返回false

    request.user.is_authenticated

    (4)check_password

      (1)检验密码是否正确

      (2)其会将用户输入的密码自动进行加密 与后端数据库进行比较

    request.user.check_password(密码)

    (5)set_password

      (1)将原有的密码进行更改

      (2)进行更改之后一定要执行save命令

    request.user.set_password(new_password)
    request.user.save() 

    (6)auth.logout(request) 

      (1)将数据库与浏览器中的数据都会清除

      (2)类似于request.session.flush

    auth.logout(request) 

    (7)login_requied

    from django.contrib.auth.decorators import  login_required
    @login_required(login_url='/xxx/')  # 局部配置
    def index(request):
        pass

    PS:

      (1)如果不指定login_url参数 如果用户没有登录会跳转到一个奇怪的页面

      (2)指定可以跳转到指定页面

    # 全局配置  settings文件中
    LOGIN_URL = '/xxx/'

    (8)创建用户

    # 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_user表格

    from django.contrib.auth.models import AbstractUser


    # 使用类的继承 class Userinfo(AbstractUser): # 千万不要跟原来表中的字段重复 只能创新 phone = models.BigIntegerField() avatar = models.CharField(max_length=32) # 一定要在配置文件中 告诉django # 告诉django orm不再使用auth默认的表 而是使用你自定义的表 AUTH_USER_MODEL = 'app01.Userinfo' # '应用名.类名'

    PS:

      (1)执行数据库迁移命令
      (2)所有的auth模块功能 全部都基于你创建的表
      (3)而不再使用auth_user

  • 相关阅读:
    ftp-server(对象存储)
    zabbix监控VMware6.7
    linux安装中文字体
    vsftpd不支持目录软链接的解决办法
    linux内网IP如果判断出网IP地址
    mysql ANSI_QUOTES 这个sql_mode的作用(字段可以使用双引号)
    查看tomcat项目中,具体占用cpu高的线程。
    nginx ssl 自签证书实验
    Redis复制和哨兵部署
    利用Python脚本备份服务器上所有PostgreSQL数据库
  • 原文地址:https://www.cnblogs.com/SR-Program/p/11588355.html
Copyright © 2011-2022 走看看