zoukankan      html  css  js  c++  java
  • Django 【认证系统】auth

    本篇内容

    介绍Django框架提供的auth 认证系统

    方法:

    方法名

    备注

    create_user

    创建用户

    authenticate

    登录验证

    login

    记录登录状态

    logout

    退出用户登录

    is_authenticated

    判断用户是否登录

    login_required装饰器

    进行登录判断

    引入模块

    from django.contrib import auth

    登录认证

    user = auth.authenticate(username=username, password=pwd)
    
    if user is not None:
        # 将登录的用户封装到request.user
        # 在中间件中 process_request 中每次都这样子处理
        # id = request.session.get("user_id") 得到id
        # user = auth.User.objects.get(id=id)
        # request.user = user
        auth.login(request, user=user)
        return redirect("/index/")

    验证通过则返回user,没有则返回None,在 login 函数中将认证通过的用户赋值给 request.user 属性,以及内部的 session 操作。 封装request.user = user       

    认证装饰器  login_required 

    from django.contrib.auth.decorators import login_required
    
    @login_required
    def index(request):
        print(request.user.username)
        return render(request, "index.html")

    需要配置登录视图的url,所以需要在 settings 文件中配置如下:

    # 如果没有登录 默认跳转的url
    LOGIN_URL = "/login/"

    创建用户

    1.普通用户

    from django.contrib.auth.models import User
    
        # 加密的
     user = User.objects.create_user(username="tanglaoer2", password="tanglaoer")
     user.set_password("tang")
     user.save()

    2.超级用户

    user = User.objects.create_superuser(username="tanglaoer2", password="tanglaoer")
    user.set_password("tang")
    user.save()

    注销

    auth.logout(request)

    内部相当于 request.session.flush() 

    扩展自带的auth_user表

    1.新建一个表, 一对一关联上面的auth_user表

    或者新建一个表,继承的方式

    from django.contrib.auth.models import AbstractUser
    
    class UserInfo(AbstractUser):
        phone = models.CharField(max_length=11)
        addr = models.CharField(max_length=128)

    相当于对默认的 auth_user 表做了扩展, 并且代替 auth_user ,还需要在配置文件 settings 中进行如下配置:

    # 如果使用继承的方式 继承auth的models,要在settings.py里面配置 默认用户认证时使用的哪张表
    AUTH_USER_MODEL = "app.UserInfo"

    auth认证还是使用 auth   只是创建用户的时候改为 用 UserInfo 

  • 相关阅读:
    linux 虚拟机web服务接入互联网
    golang操作数据库
    开启提示:press esc in 5 seconds to skip 如何操作
    如何将qcow2转为vhd
    统信UOS如何分卷压缩
    统信UOS欧拉版本如何制作启动盘
    UOS输错密码导致长时间锁定怎么办?
    在UOS中使用WPS编辑文件,忘记保存关闭了文件,怎么找回?
    uos server版一开始没有安装桌面,后面客户需要加装DDE桌面如何实现
    uos系统升级时,我不想升级相关软件包,应该如何去做
  • 原文地址:https://www.cnblogs.com/tangkaishou/p/10226579.html
Copyright © 2011-2022 走看看