异能力是川上富江小说笔趣阁_川上富江经典语句
1、1 男人都是头脑简单的无聊生物,他们只会看外表,他们明明对我一无
(资料图片仅供参考)
from django.db import models# Create your models here.class UserInfo(models.Model): role_choice = ((1, "CEO"), (2, "CTO"), (3, "CFO")) role = models.SmallIntegerField(verbose_name="类型", choices=role_choice, default=1) username = models.CharField(verbose_name="用户名", max_length=32) password = models.CharField(verbose_name="密码", max_length=32) token = models.CharField(verbose_name="TOKEN", max_length=64, null=True, blank=True)
from rest_framework.permissions import BasePermissionclass PermissionA(BasePermission): message = {"code": 1003, "data": "无权访问"} def has_permission(self, request, view): if request.user.role == 2: return True return False def has_object_permission(self, request, view, obj): return True
class UserView(APIView): permission_classes = [PermissionA, ] # role权限 def get(self, request): ...
REST_FRAMEWORK = { # 权限 "DEFAULT_PERMISSION_CLASSES": ["app01.permission.PermissionA", ]}
当开发过程中需要用户同时具备多个权限(缺一不可)时,可以用多个权限类来实现。
权限组件内部处理机制:按照列表的顺序逐一执行 has_permission
方法,如果返回True,则继续执行后续的权限类;如果返回None或False,则抛出权限异常并停止后续权限类的执行。
# models.pyfrom django.db import modelsclass Role(models.Model): """ 角色表 """ title = models.CharField(verbose_name="名称", max_length=32)class UserInfo(models.Model): """ 用户表 """ username = models.CharField(verbose_name="用户名", max_length=32) password = models.CharField(verbose_name="密码", max_length=64) token = models.CharField(verbose_name="TOKEN", max_length=64, null=True, blank=True) roles = models.ManyToManyField(verbose_name="角色", to="Role")
# urls.pyfrom django.urls import path, re_path, includefrom app01 import viewsurlpatterns = [ path("api/auth/", views.AuthView.as_view()), path("api/order/", views.OrderView.as_view()),]
# views.pyimport uuidfrom rest_framework.views import APIViewfrom rest_framework.request import Requestfrom rest_framework.response import Responsefrom rest_framework.authentication import BaseAuthenticationfrom rest_framework.permissions import BasePermissionfrom rest_framework.exceptions import AuthenticationFailedfrom app01 import modelsclass AuthView(APIView): """ 用户登录认证 """ def post(self, request, *args, **kwargs): print(request.data) # {"username": "wupeiqi", "password": "123"} username = request.data.get("username") password = request.data.get("password") user_object = models.UserInfo.objects.filter(username=username, password=password).first() if not user_object: return Response({"code": 1000, "data": "用户名或密码错误"}) token = str(uuid.uuid4()) user_object.token = token user_object.save() return Response({"code": 0, "data": {"token": token, "name": username}})class TokenAuthentication(BaseAuthentication): def authenticate(self, request): token = request.query_params.get("token") if not token: raise AuthenticationFailed({"code": 1002, "data": "认证失败"}) user_object = models.UserInfo.objects.filter(token=token).first() if not user_object: raise AuthenticationFailed({"code": 1002, "data": "认证失败"}) return user_object, token def authenticate_header(self, request): return "Bearer realm="API""class PermissionA(BasePermission): message = {"code": 1003, "data": "无权访问"} def has_permission(self, request, view): exists = request.user.roles.filter(title="员工").exists() if exists: return True return False def has_object_permission(self, request, view, obj): return Trueclass PermissionB(BasePermission): message = {"code": 1003, "data": "无权访问"} def has_permission(self, request, view): exists = request.user.roles.filter(title="主管").exists() if exists: return True return False def has_object_permission(self, request, view, obj): return Trueclass OrderView(APIView): authentication_classes = [TokenAuthentication, ] permission_classes = [PermissionA, PermissionA] def get(self, request, *args, **kwargs): return Response({"code": 0, "data": {"user": None, "list": [1, 2, 3]}})class PayView(APIView): authentication_classes = [TokenAuthentication, ] permission_classes = [PermissionA, ] def get(self, request, *args, **kwargs): return Response({"code": 0, "data": "数据..."})
后期补充...
第三步前面的部分执行流程和前两篇文章是一样的. 这里就不过多赘述了
关键词:
1、1 男人都是头脑简单的无聊生物,他们只会看外表,他们明明对我一无
近日,国内知名网络消费纠纷调解平台“电诉宝”()接到用户投诉“天猫
格隆汇6月20日丨明德生物002932002932SZ公布2023年6月20日武汉明德生物
建宁县气象台2023年06月20日14时06分发布雷电黄色预警信号:预计未来6
国家速滑馆已为数万名师生带来沉浸式体验(引题)暑期来“冰丝带”感受
截至午后两点,上证指数报3248 96点,下跌0 21%,深证成指报11335 77点
团队管理者应该如何避免产生职业倦怠呢?本文给出了有效帮助团队管理者
东经105°73′,北纬28°42′,一处鲜明热烈的“丹红”,一片富有生机
乐居财经李礼6月20日,建发房地产集团有限公司发布了2023年面向专业投
18:30截至2022年4月,我国公路总里程达到528万公里。在这四通八达的路
名嘴:只有5人配得上交易否决权
军工板块震荡走强,国产航母方向领涨,中国船舶(600150)冲击涨停,航发
外电6月19日消息,业内人士称,继去年的危机之后,LME修复其破裂的镍合
外汇百晓生:黄金空头思路不变,关注1966继续干空昨日因6月节的缘故,
6月19日,中望软件(688083)融资买入850 8万元,融资偿还1106 86万元
艾叶飘香,端午将至,粽子作为传统节令食品已大量上市。昨天,记者从市
海南省七届人大常委会第四次会议审议通过的《海南省养老服务条例》将于
大米企业转型盈利的法宝——项目画布。大米企业目前大多似乎进入了一个
1、标准化妆步骤:一、妆前准备洁面:选用适合自己肤质的洁面乳将脸洗净2
日前,AMD公布了新一代GPU计算加速卡MI300X,集成13个chiplet小芯片、1