django自有的session校验机制

django自带有session机制:

用户表,只要是继承的AbstractUser,就可以拥有这个session校验

【操作1】

随便在应用下新建sign_in_out.py  ( 登录登出)

"""这个里的代码用来处理
登录和登出"""
from django.http import JsonResponse

from django.contrib.auth import authenticate, login, logout


# 登录处理
def signin(request):
    # 从 HTTP POST 请求中获取用户名、密码参数
    userName = request.POST.get('username')
    passWord = request.POST.get('password')

    # 使用 Django auth 库里面的 方法校验用户名、密码 (如果账号密码不对,或者is_active为0 就返回 None)
    user = authenticate(username=userName, password=passWord)
    if user is not None:
        if user.is_superuser:

            # django的登录方法
            login(request, user)
            # 在session中存入用户类型
            request.session['usertype'] = 'mgr'
            return JsonResponse({'ret': 0})
        else:
            return JsonResponse({'ret': 1, 'msg': '请使用管理员账户登录'})
    else:
        return JsonResponse({'ret': 1, 'msg': '用户名或者密码错误、或未激活'})



# 登出处理
def signout(request):
    # 使用登出方法
    logout(request)
    return JsonResponse({'ret': 0})

配置url 和使用

【操作1里包含的知识点】

源码都在这里:from django.contrib.auth import authenticate, login, logout
  1. authenticate 可以用来校验用户表里有没有,如果返回为东西,则表示有数据且is_active为
    1. 否则    就返回 None
  2. login 登录方法(第二个参数是authenticate校验方法返回的用户对象):
    1. 登录成功后,会在django_session表中存一条数据
    2. 如下图,比如浏览器在admin页面登录,或用postman调接口只要触发了 auth中的login都会存
  3.  还可以自定义在session里面加东西 上图在sessionId中加了特殊类型后,后续业务接口可以进行判断,它是否登录还是未登录,具体的可以看 :实现登录 | 白月黑羽

  【补充】

如果是浏览器登录,或postman登录后,浏览器和工具都自己会存一份sessionid

admin页面,它就使用的django自带的session机制

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值