django实现自定义登陆验证


  • 自定义装饰器函数和类
  •  from utils.http import HttpResponseUnauthorized
    from django.views import View # 登陆校验装饰器 函数视图校验
    def login_require(func):
    def wrapper(request): # 校验session中是否存在login_flag
    login_flag = request.session.get('login_flag') if not login_flag:
    return HttpResponseUnauthorized('用户未登录') result = func(request)
    return result return wrapper # 登陆校验视图类 类视图校验
    class LoginRequireMixin(View):
    @classmethod
    def as_view(cls, **initkwargs):
    # 对父类的as_view进行改写并封装
    view = super(LoginRequireMixin, cls).as_view(**initkwargs)
    return login_require(view)
  • HttpResponseUnauthorized
     from django.http import HttpResponse
    
     class HttpResponseUnauthorized(HttpResponse):
    status_code = 401
  • 具体使用
  •  # 保存成绩
    @login_require
    def saveScore(request):
    if request.method == 'POST': open_id = request.POST.get('open_id')
    nickName = request.POST.get('nickName')
    gameType = request.POST.get('gameType')
    spendTime = request.POST.get('spendTime')
    ageType = request.POST.get('ageType') if not all([open_id, nickName, gameType, spendTime, ageType]):
    date = {'success': False, 'info': '请求数据不完整'}
    return JsonResponse(date) if request.session.get('openId') != open_id:
    data = {'success': False, 'info': '请求玩家和使用玩家不一致'}
    return JsonResponse(data) Score(open_id=open_id, nickName=nickName, gameType=gameType, spendTime=spendTime, ageType=ageType).save()
    data = {'success': True, 'info': '保存成功!'}
    return JsonResponse(data) return HttpResponseForbidden('Method not allowed') # 分类成绩查询
    class RankingQuery(LoginRequireMixin): def post(self, request):
    queryType = request.POST.get('queryType')
    offset = request.POST.get('offset') if not all([queryType, offset]):
    data = {'success': False, 'info': '数据不完整'}
    return JsonResponse(data) queryTypeRoute = {
    'byScore': self.queryByScore
    }
    if queryType not in queryTypeRoute:
    return HttpResponseBadRequest('unsupport queryType') func = queryTypeRoute['queryType']
    data = func(offset) return JsonResponse(data)

django实现自定义登陆验证的更多相关文章

  1. Django自定义登陆验证后台

    支持邮箱/手机号/昵称登录,在django1.6.2测试成功.1.models # -*- encoding: utf-8 -*- from django.db import models from ...

  2. Django之Cookie Session详解,CBV,FBV登陆验证装饰器和自定义分页

    Cookie Session和自定义分页   cookie Cookie的由来 大家都知道HTTP协议是无状态的. 无状态的意思是每次请求都是独立的,它的执行情况和结果与前面的请求和之后的请求都无直接 ...

  3. Django(5) session登录注销、csrf及中间件自定义、django Form表单验证(非常好用)

    一.Django中默认支持Session,其内部提供了5种类型的Session供开发者使用: 数据库(默认) 缓存 文件 缓存+数据库 加密cookie 1.数据库Session 1 2 3 4 5 ...

  4. Django项目:CRM(客户关系管理系统)--38--30PerfectCRM实现King_admin编辑自定义字段验证

    # kingadmin.py # ————————04PerfectCRM实现King_admin注册功能———————— from crm import models #print("ki ...

  5. Django中间件(中间件版登陆验证、访问频率限制)

    一.介绍 官方的说法:中间件是一个用来处理Django的请求和响应的框架级别的钩子.它是一个轻量.低级别的插件系统,用于在全局范围内改变Django的输入和输出.每个中间件组件都负责做一些特定的功能. ...

  6. Cookie、Session登陆验证相关介绍和用法

    一.Cookie和Session 首先.HTTP协议是无状态的:所谓的无状态是指每次的请求都是独立的,它的执行情况和结果与前面的请求和之后的请求都无直接关系,它不会受前面的请求响应直接影响,也不会直接 ...

  7. form表单使用(博客系统的登陆验证,注册)

    先从小的实例来看form的用法 登陆验证实例,来看form的常规用法 1. forms.py # 用于登陆验证验证 from django.core.validators import RegexVa ...

  8. DRF JWT的用法 & Django的自定义认证类 & DRF 缓存

    JWT 相关信息可参考: https://www.jianshu.com/p/576dbf44b2ae DRF JWT 的使用方法: 1. 安装 DRF JWT # pip install djang ...

  9. 自己写登陆验证及借用auth的is_authenticated验证是否登陆

    一. 自己写登陆需要注册,一个session的处理,还有一个session的删除 #自定义一个闭包装饰器,来验证def checkLogin(func): def wrapper(request, * ...

随机推荐

  1. 使用StreamHttpResponse和FileResponse下载文件的注意事项及文件私有化

    为什么需要编写下载视图方法? 你或许知道,我们上传的文件默认放在media文件夹中的,且Django会为每个上传的静态文件分配一个静态url.在模板中,你可以使用{{ mymodel.file.url ...

  2. mysql 多个字段重复记录查询

    select * from productstockquantity t where () ORDER BY t.CombinationI

  3. 【Weiss】【第03章】练习3.18:检查平衡符号

    [练习3.18]用下列语言编写检测平衡符号的程序 a.Pascal ( begin/end, ( ), [ ], { } ). b.C语言( /* */, ( ), [ ], { }). c.解释如何 ...

  4. java-乘法口诀表。(新手)

    //创建的一个包名. package qige; //定义一个类. public class KJ { //公共静态的一个主方法. public static void main(String[] a ...

  5. 在Linux环境安装redis步骤,且设置开机自动启动redis

    最近在linux环境安装了redis学习,目前已经安装成功且设置开机即启动状态,我把步骤流程记录了下来,分享给需要的小伙伴. 1.我在/usr/local/localsoftware/目录下创建了一个 ...

  6. iOS开发:UIColor转成纯色图片(UIImage)

    Objective-c 版本 UIKIT_EXTERN UIImage * __nullable UIColorAsImage(UIColor * __nonnull color, CGSize si ...

  7. 深夜,我用python爬取了整个斗图网站,不服来斗

    QQ.微信斗图总是斗不过,索性直接来爬斗图网,我有整个网站的图,不服来斗. 废话不多说,选取的网站为斗图啦,我们先简单来看一下网站的结构 网页信息 从上面这张图我们可以看出,一页有多套图,这个时候我们 ...

  8. 微信开发+百度AI学习:植物识别

    直接上代码 服务端代码如下 private static readonly Baidu.Aip.ImageClassify.ImageClassify client = new Baidu.Aip.I ...

  9. hdu1026Ignatius and the Princess ,又要逃离迷宫了

    题目链接:http://icpc.njust.edu.cn/Problem/Hdu/1026/ 题意就是一个迷宫,然后有些位置上有守卫,守卫有一个血量,要多花费血量的时间击败他,要求从(0,0)到(n ...

  10. 【洛谷】P2444 [POI2000]病毒——AC自动机

    题目链接 题目描述 二进制病毒审查委员会最近发现了如下的规律:某些确定的二进制串是病毒的代码.如果某段代码中不存在任何一段病毒代码,那么我们就称这段代码是安全的.现在委员会已经找出了所有的病毒代码段, ...