Django 实现权限分组(权限控制实现 第三方满足不了需求)

  1. 在Django项目中新建permissions
  2. 引入库

from django.core.exceptions import ObjectDoesNotExist from rest_framework.permissions import BasePermission from xxx import models

实现代码

class CanAccess(BasePermission):
    def has_permission(self, request, view):
        kong_user = request.META.get(HEAD_KEY, "")
        pk = view.kwargs.get('pk', 0)
        url_method, url_path = request.method, request.path
        try:
            # 获取当前用户
            action_user = models.TbUser.objects.get(id=kong_user)
            # 获取当前用户所在的所有用户组
            action_groups = action_user.ugroups.all()
            # 遍历所有用户组具有的权限
            can_access_roles = []
            for group in action_groups:
                for role in group.roles.all().values_list("method", "link"):
                    can_access_roles.append(tuple(str(item) for item in role))
            if (str(url_method), str(url_path)) in can_access_roles:
                return True
            else:
                return False
        except Exception, e:
            return False

表的设计

Tags: None

Archives QR Code

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏YG小书屋

Python3编码与mysql编码介绍

3615
来自专栏技术专栏

慕课网高并发实战(五)- 安全发布对象

不正确的发布可变对象导致的两种错误: 1.发布线程意外的所有线程都可以看到被发布对象的过期的值 2.线程看到的被发布对象的引用是最新的,然而被发布对象的状态...

1292
来自专栏深度学习之tensorflow实战篇

python连接SQL报错:1366, "Incorrect string value: '\\xF0\\x9F\\x98\\x81'

问题描述:Python从百度地图抓取消息保存到MySQL数据中,对应数据库字段为varchar以及TEXT,字符编码utf-8。部分插入成功,部分插入失败,报错...

3725
来自专栏企鹅号快讯

再见乱码:5 分钟读懂 MySQL 字符集设置

作者: 程序猿小卡_casper 原文:https://segmentfault.com/a/1190000012775484 一、内容概述 在MySQL的使用...

2168
来自专栏肖洒的博客

【更正】Java调用Python

该方法可以解决传递形参的问题。也可以执行Python程序。 遇到的问题:需要确定好jython的路径问题和其他设置的路径问题。

1263
来自专栏爱撒谎的男孩

Spring初体验

4256
来自专栏肖洒的博客

java本地文件操作

1693
来自专栏马洪彪

Java设计模式(二)抽象工厂模式

一、场景描述 接《Java设计模式(一)工厂模式》 工厂模式有一缺点,就是破坏了类的封闭性原则。例如,如果需要增加Word文件的数据采集,此时按以下步骤操作: ...

41010
来自专栏Android小菜鸡

时间选择器TimePickerDialog

  TimePickerDialog是一个android自带的为设置时间而提供的Dialog,使用起来简单,上手快。时常配合Canlendar一起使用。

1542
来自专栏专注 Java 基础分享

表示一个文件的 File 类型

从本篇文章开始,我们将开启对 Java IO 系统的学习,本质上就是对文件的读写操作,听上去简单,其实并不容易。Java 的 IO 系统一直在完善和改进,设计了...

990

扫码关注云+社区

领取腾讯云代金券