一、动态菜单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. Mysql 事务相关

    MySQL介绍 什么是MySQL? ​ MySQL 是一种关系型数据库,在Java企业级开发中非常常用,因为 MySQL 是开源免费的,并且方便扩展.阿里巴巴数据库系统也大量用到了 MySQL,因此它 ...

  2. Django 模型层 ORM 操作

    运行环境 1. Django:2.1.3 version 2. PyMysql: 0.9.3 version 3. pip :19.0.3 version 4. python : 3.7 versio ...

  3. HTML+CSS+JS是什么

    html:整合网页结构和内容显示的一种语言 css:是一种用来表现HTML或XML等文件样式的计算机语言 js:增加表现力的脚本 做网页前台设计的标准套装,html是一些网页控件,css是美化这些控件 ...

  4. oracle时间问题 与case then

    思路一 --select * from nls_session_parameters where parameter='NLS_DATE_LANGUAGE'; -- 修改会话的默认日期格式 ALTER ...

  5. Socket网络通信——IO、NIO、AIO介绍以及区别

    一 基本概念 Socket又称"套接字",应用程序通常通过"套接字"向网路发出请求或者应答网络请求. Socket和ServerSocket类位于java.ne ...

  6. java.sql.SQLException: Illegal mix of collations (utf8mb4_general_ci,IMPLICIT) and (utf8mb4_0900_ai_ci,IMPLICIT) for operation '='

    查询视图时报错:java.sql.SQLException: Illegal mix of collations (utf8mb4_general_ci,IMPLICIT) and (utf8mb4_ ...

  7. MySQL(关系型数据库管理系统)

    MySQL 关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品.MySQL 是最流行的关系型数据库管理系统之一,在WEB应用方面,MySQL是最好的 RDBMS ...

  8. BZOJ 3653: 谈笑风生(主席树)

    传送门 解题思路 首先对于一个\(a\)来说,要求\(b\)和\(c\),那么\(a,b,c\)一定在一条链上.把\(b\)分类讨论,如果\(b\)是\(a\)的祖宗,这个方案数就很好统计了,就是\( ...

  9. HTML5 开发技能图谱skill-map

    # HTML5 开发技能图谱![HTML5 脑图](https://github.com/TeamStuQ/skill-map/blob/master/data/designbyStuQ/png-HT ...

  10. python 100day notes (1)

    x1 + x2 +x3 + x4 = 8 多少正整数解 上面的问题等同于将8个苹果分成四组每组至少一个苹果有多少种方案 即用三个隔板插7个空位. 答案C(7,3) =35 # __name__是Pyt ...