一、动态菜单API的生成

1、API

    #菜单信息
url(r'^menus$', views.MenuModelView.as_view({"get": "list", }), name="menus-list"),

2、MenuModelView

from collections import OrderedDictclass MenuModelView(GenericViewSet):

    authentication_classes = [AuthToken]

    def list(self,request,*args,**kwargs):

        ret = {"data": {}, "meta": {"message": "获取菜单成功", "code": 2000}}
try:
user = request.user
menus_dict = InitPermission(request, user).init_menus_dict()
od = OrderedDict()
if menus_dict:
for key in sorted(menus_dict):
od[key] = menus_dict[key]
ret["data"] = {"menus_list":od.values()}
except Exception as e:
ret["meta"]["message"] = "获取菜单失败"
ret["meta"]["code"] = 2001 return Response(ret)

  在restframework框架的认证组件中通过 authentication_classes = [AuthToken]进行认证,获得user,从而传入user,从而初始化菜单数据,然后根据数据库中的positionid可以进行菜单排序。

认证参考:https://www.cnblogs.com/shenjianping/p/11387324.html

初始化菜单参考:https://www.cnblogs.com/shenjianping/p/11448427.html

二、权限API生成

1、API

    #前端获取权限,用于按钮级别的权限检验
url(r'^roles/rights$',views.RightsView.as_view({"get": "list"}), name="roles-rights-list"),

2、RightsView

class RightsView(GenericViewSet):

    def list(self,request,*args,**kwargs):
"""
从redis中获取权限相关,用于前台按钮级别权限检验
{'/crm/dept$': ['get'], 'rights/(?P<type>\\w+)$': ['get'], '/crm/menus': ['get']
:param request:
:param args:
:param kwargs:
:return:
"""
#从redis中获取permission_dict
ret = {"data": {}, "meta": {
"message": "获取权限信息成功", "code": 2000}}
try:
permission_bytes = SessionStore().get_session(settings.PERMISSION_SESSION_KEY)
permission_dict = eval(permission_bytes)
ret["data"] = permission_dict
except Exception as e:
ret["meta"]["message"] = "获取权限信息失败"
ret["meta"]["code"] = 2001 return Response(ret)

在用户权限初始化后会将其保存在redis中,这里返回的就是在redis中存储的用户权限。

前后端分离进行权限管理之后端API返回菜单及权限信息(三)的更多相关文章

  1. 前后端分离开发,基于SpringMVC符合Restful API风格Maven项目实战(附完整Demo)!

    摘要: 本人在前辈<从MVC到前后端分离(REST-个人也认为是目前比较流行和比较好的方式)>一文的基础上,实现了一个基于Spring的符合REST风格的完整Demo,具有MVC分层结构并 ...

  2. Android权限管理之Android 6.0运行时权限及解决办法

    前言: 今天还是围绕着最近面试的一个热门话题Android 6.0权限适配来总结学习,其实Android 6.0权限适配我们公司是在今年5月份才开始做,算是比较晚的吧,不过现在Android 6.0以 ...

  3. 从壹开始前后端分离【 .NET Core2.0 +Vue2.0 】框架之十二 || 三种跨域方式比较,DTOs(数据传输对象)初探

    更新反馈 1.博友@落幕残情童鞋说到了,Nginx反向代理实现跨域,因为我目前还没有使用到,给忽略了,这次记录下,为下次补充.此坑已填 2.提示:跨域的姊妹篇——<三十三║ ⅖ 种方法实现完美跨 ...

  4. 尝试封装适用于权限管理的通用API

    谈谈我对权限系统的简单理解 最近一段时间在研究权限系统,在园子里看到个很牛逼的开源的基于DDD-Lite的权限管理系统,并有幸加入了作者的QQ群,呵呵,受到了很大的影响.对于权限管理我有我自己的一些简 ...

  5. .NET快速信息化系统开发框架 V3.2 -> WinForm“组织机构管理”界面组织机构权限管理采用新的界面,操作权限按模块进行展示

    对于某些大型的企业.信息系统,涉及的组织机构较多,模块多.操作权限也多,对用户或角色一一设置模块.操作权限等比较繁琐.我们可以直接对某一组织机构进行权限的设置,这样设置后,同一组织机构的用户就可以拥有 ...

  6. 前后端分离开发之前端自己的API(DB)---- (1)

    Creating demo APIs for Front-End Developer 心理准备 Tool-1 开发工具/编辑器:Visual Studio Code , 即 VSCode官网: htt ...

  7. ODOO权限管理,在两个方面设置权限

    转载参考https://zhuanlan.zhihu.com/p/29130388 在odoo中新建两个用户user1,user2 新建用户 建完了用户,记得编辑用户,设置密码. 然后以user1用户 ...

  8. 第7章 权限管理(2)_文件特殊权限(SUID、SGID、SBIT)

    2. 文件特殊权限(主要用来临时提升命令执行者或其组身份) 2.1 SetUID (1)SetUID的功能 ①只有可以执行的二进制程序才能设定SUID权限.用来临时提升执行程序(或某条命令)的用户身份 ...

  9. SpringBoot+Vue前后端分离,使用SpringSecurity完美处理权限问题(一)

    当前后端分离时,权限问题的处理也和我们传统的处理方式有一点差异. 笔者前几天刚好在负责一个项目的权限管理模块,现在权限管理模块已经做完了,我想通过5-6篇文章,来介绍一下项目中遇到的问题以及我的解决方 ...

随机推荐

  1. java应用之openfire入门篇

    前言 openfire是一个聊天服务端,好比qq服务端.本质是个socker server. openfire通讯协议是 xmpp  ,什么是xmpp参考百科 https://baike.baidu. ...

  2. kvm的img文件的本机挂载

    非lvm分区挂载方法: mount -o loop xxx.img /mnt/xxx 系统提示: “mount: you must specify the filesystem type” 执行:fd ...

  3. Kaggle数据集下载

    Kaggle数据集下载步骤: 安装Kaggle库: 注册Kaggle账户: 找到数据集,接受rules: 在My Account>>API中,点击Create New API Token, ...

  4. Halo(一)

    @EnableJpaAuditing 审计功能(启动类配置) 在实际的业务系统中,往往需要记录表数据的创建时间.创建人.修改时间.修改人. 每次手动记录这些信息比较繁琐,SpringDataJpa 的 ...

  5. 【NOIP2019模拟11.01】Game(贪心+线段树)

    Description: ​ 小 A 和小 B 在玩一个游戏,他们两个人每人有

  6. 阿里云HBase推出普惠性高可用服务,独家支持用户的自建、混合云环境集群

    HBase可以支持百TB数据规模.数百万QPS压力下的毫秒响应,适用于大数据背景下的风控和推荐等在线场景.阿里云HBase服务了多家金融.广告.媒体类业务中的风控和推荐,持续的在高可用.低延迟.低成本 ...

  7. JRE和JVM的区别

    JRE和JVM的区别       JRE(JavaRuntimeEnvironment,Java运行环境),也就是Java平台.所有的Java程序都要在JRE下才能运行.JDK的工具也是Java程序, ...

  8. ALAsset和ALAssetRepresentation详解

    ALAsset类代表相册中的每个资源文件,可以通过它获取资源文件的相关信息还能修改和新建资源文件,ALAssetRepresentation类代表相册中每个资源文件的详细信息,可以通过它获取资源的大小 ...

  9. svn提交代码失败提示清理(清理失败并且报错信息乱码解决办法)

    原因是;svn的数据库队列原因 1,下载sqlite3.exe,  sqlite官网http://www.sqlite.org/download.html) 2.在Windows的D盘中新建tools ...

  10. PAT 1036 Boys vs Girls (25 分)

    1036 Boys vs Girls (25 分)   This time you are asked to tell the difference between the lowest grade ...