认证权限频率自定义

from rest_framework.authentication import BaseAuthenticationfrom rest_framework.permissions import BasePermissionfrom rest_framework.throttling import BaseThrottle,SimpleRateThrottlefrom django_redis import get_redis_connectionfrom rest_framework import exceptionsimport picklefrom app import modelsclass Myauthentication(BaseAuthentication):    def authenticate(self, request):        token=request.GET.get(‘token‘)        token=pickle.dumps(token)        conn=get_redis_connection()        conn_token=conn.get(‘token‘)        if token==conn_token:            user=models.User.objects.filter(id=pickle.loads(token)).first()            return user,token        raise exceptions.AuthenticationFailed(‘未通过验证‘)

class Mypermissions(BasePermission):    def has_permission(self, request, view):        try:            if request.user.user_type != 0:                    return ‘success‘            else:                return False        except AttributeError:            raise exceptions.AuthenticationFailed(‘未通过验证‘)class Mythrottling(SimpleRateThrottle):    scope = ‘uuu‘    # ‘DEFAULT_THROTTLE_RATES‘: {    #     ‘xxx‘: ‘10/day‘    # }    def get_cache_key(self, request, view):        return request.META.get(‘REMOTE_ADDR‘)

视图层
from django.shortcuts import render

# Create your views here.from rest_framework.response import Responsefrom rest_framework.views import APIViewfrom app.models import *from app.Myserize import BookSerializers,PublishSerializersfrom rest_framework.viewsets import ModelViewSet,ViewSetMixinfrom django_redis import get_redis_connectionimport picklefrom app.Myauth import *class Books(ViewSetMixin,APIView):    # queryset=Book.objects.all()    # serializer_class=BookSerializers    authentication_classes = []    permission_classes = []    def post(self,request):        book_ret=Book.objects.all()        response={‘statue‘: 1, ‘msg‘: ‘获取成功‘}        response[‘data‘]=BookSerializers(book_ret,many=True).data        return Response(response)

class Publishs(ViewSetMixin,APIView):  def post(self,request):        response = {‘statue‘: 1, ‘msg‘: ‘新增成功‘}        print(request.data)        model=PublishSerializers(data=request.data)        if model.is_valid():            model.save()            response[‘data‘]=model.data        else:            response[‘data‘]=model.errors        return Response(response)

class Login(ViewSetMixin,APIView):    authentication_classes = []    permission_classes = []    def post(self,request):      name=request.data.get(‘name‘,None)      pwd=request.data.get(‘pwd‘,None)      user=User.objects.filter(name=name,pwd=pwd).first()      if user:          request.user=user          conn=get_redis_connection()          response = {‘statue‘: 1, ‘msg‘: ‘登陆成功‘}          token=pickle.dumps(str(user.id))          conn.set(‘token‘,token)          conn.expire(‘token‘,20)          response[‘date‘]=user.id          return Response(response)      return render(request,‘login.html‘)    def get(self,request):        return render(request, ‘login.html‘)

原文地址:https://www.cnblogs.com/wrqysrt/p/10660256.html

时间: 2024-07-31 16:08:13

认证权限频率自定义的相关文章

【原】无脑操作:IDEA + maven + Shiro + SpringBoot + JPA + Thymeleaf实现基础认证权限

开发环境搭建参见<[原]无脑操作:IDEA + maven + SpringBoot + JPA + Thymeleaf实现CRUD及分页> 需求: ① 除了登录页面,在地址栏直接访问其他URL,均跳转至登录页面 ② 登录涉及帐号和密码,帐号错误提示帐号错误,密码错误提示密码错误 ③ 登录成功跳转至首页,首页显示登录者帐号信息,并有注销帐号功能,点击注销退出系统 ------------------------------------------------------------------

版本,认证,权限

版本 DRF中版本 导入 from rest_framework.versioning import 全局配置版本控制系统 /v1/books/    是在 URL加查询参数 # DRF的配置 REST_FRAMEWORK = { # 配置默认使用的版本控制类 'DEFAULT_VERSIONING_CLASS': 'rest_framework.versioning.URLPathVersioning', 'DEFAULT_VERSION': 'v1', # 默认的版本 'ALLOWED_VE

【转】 Pro Android学习笔记(六五):安全和权限(2):权限和自定义权限

目录(?)[-] 进程边界 声明和使用权限 AndroidManifestxml的许可设置 自定义权限 运行安全通过两个层面进行保护.进程层面:不同应用运行在不同的进程,每个应用有独自的user ID:在操作层面,Android定义了所需保护的功能和资源,如果应用需要访问这些信息,必须在AndroidManifest.xml文件中请求许可,应用可以有自定义的许可. 进程边界 每个应用的userID不同,使得各个进程之间存在隔离的边界,防止应用直接获取其他应用的数据,需要通过content pro

Orchard 前台权限与自定义权限

一:关于前台权限 1:只允许自己看到 首先,我们需要确定在 Role 设置页面,用户所对应的 View Page by others 和 View all content 未被选中.备注,我们首先和得设置 Anonymous 和 Authenticated 的这两个的权限,这两项也未被选中. 这样一来,我们可以达到整个站点,我们只能看到自己的东西,如下: 而如果是 Admin 等全权限登录的,应该是这样的: 2:只允许某个角色看到 同理1. 二:关于自定义权限 首先,我们需要在模块的根目录下创建

SAP云解决方案和企业本地部署(On-Premise)混合架构下的安全认证权限管理

SAP提供了用户认证.权限管理和单点登录等安全相关的解决方案.但是随着云平台的兴起,企业已经部署的安全解决方案如何与云平台的安全解决方案集成呢?这是摆在我们面前的一个问题,而且是一个至关重要.需要认真思考的问题. 本文将探讨SAP提供的本地部署和云平台的安全解决方案产品集:SAP Single Sign-On, SAP Cloud Platform Identity Authentication, SAP Identity Management, 和SAP Cloud Platform Iden

认证 权限 视图 频率

认证组件 使用:写一个认证类,继承BaseAuthentication 在类中写authenticate方法,把request对象传入 能从request对象中取出用户携带的token根据token判断是否登录过 如果登录过,返回两个值 user对象 ,token对象(或者其他自定义的对象) 如果没有登录过抛异常 from rest_framework.authentication import BaseAuthentication from app01 import models from r

DRF认证、自定义认证和权限、自定义权限

源码分析 """ 1)APIView的dispath(self, request, *args, **kwargs) 2)dispath方法内 self.initial(request, *args, **kwargs) 进入三大认证 # 认证组件:校验用户 - 游客.合法用户.非法用户 # 游客:代表校验通过,直接进入下一步校验(权限校验) # 合法用户:代表校验通过,将用户存储在request.user中,再进入下一步校验(权限校验) # 非法用户:代表校验失败,抛出异常

drf框架 8 系统权限类使用 用户中心信息自查 token刷新机制 认证组件项目使用:多方式登录 权限组件项目使用:vip用户权限 频率组件 异常组件项目使用

系统权限类使用 图书接口:游客只读,用户可增删改查权限使用 from rest_framework.permissions import IsAuthenticatedOrReadOnly class BookViewSet(ModelViewSet): # 游客只读,用户可增删改查 permission_classes = [IsAuthenticatedOrReadOnly] queryset = models.Book.objects.all() serializer_class = se

DRF 权限 频率

DRF的权限 权限是什么 大家之前都应该听过权限~那么我们权限到底是做什么用的呢~~ 大家都有博客~或者去一些论坛~一定知道管理员这个角色~ 比如我们申请博客的时候~一定要向管理员申请~也就是说管理员会有一些特殊的权利~是我们没有的~~ 这些对某件事情决策的范围和程度~我们叫做权限~~权限是我们在项目开发中非常常用到的~~ 那我们看DRF框架给我们提供的权限组件都有哪些方法~~ 权限组件源码 我们之前说过了DRF的版本和认证~也知道了权限和频率跟版本认证都是在initial方法里初始化的~~ 其