前后端分离进行权限管理之后端API返回菜单及权限信息(三)
一、动态菜单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返回菜单及权限信息(三)的更多相关文章
- 前后端分离开发,基于SpringMVC符合Restful API风格Maven项目实战(附完整Demo)!
摘要: 本人在前辈<从MVC到前后端分离(REST-个人也认为是目前比较流行和比较好的方式)>一文的基础上,实现了一个基于Spring的符合REST风格的完整Demo,具有MVC分层结构并 ...
- Android权限管理之Android 6.0运行时权限及解决办法
前言: 今天还是围绕着最近面试的一个热门话题Android 6.0权限适配来总结学习,其实Android 6.0权限适配我们公司是在今年5月份才开始做,算是比较晚的吧,不过现在Android 6.0以 ...
- 从壹开始前后端分离【 .NET Core2.0 +Vue2.0 】框架之十二 || 三种跨域方式比较,DTOs(数据传输对象)初探
更新反馈 1.博友@落幕残情童鞋说到了,Nginx反向代理实现跨域,因为我目前还没有使用到,给忽略了,这次记录下,为下次补充.此坑已填 2.提示:跨域的姊妹篇——<三十三║ ⅖ 种方法实现完美跨 ...
- 尝试封装适用于权限管理的通用API
谈谈我对权限系统的简单理解 最近一段时间在研究权限系统,在园子里看到个很牛逼的开源的基于DDD-Lite的权限管理系统,并有幸加入了作者的QQ群,呵呵,受到了很大的影响.对于权限管理我有我自己的一些简 ...
- .NET快速信息化系统开发框架 V3.2 -> WinForm“组织机构管理”界面组织机构权限管理采用新的界面,操作权限按模块进行展示
对于某些大型的企业.信息系统,涉及的组织机构较多,模块多.操作权限也多,对用户或角色一一设置模块.操作权限等比较繁琐.我们可以直接对某一组织机构进行权限的设置,这样设置后,同一组织机构的用户就可以拥有 ...
- 前后端分离开发之前端自己的API(DB)---- (1)
Creating demo APIs for Front-End Developer 心理准备 Tool-1 开发工具/编辑器:Visual Studio Code , 即 VSCode官网: htt ...
- ODOO权限管理,在两个方面设置权限
转载参考https://zhuanlan.zhihu.com/p/29130388 在odoo中新建两个用户user1,user2 新建用户 建完了用户,记得编辑用户,设置密码. 然后以user1用户 ...
- 第7章 权限管理(2)_文件特殊权限(SUID、SGID、SBIT)
2. 文件特殊权限(主要用来临时提升命令执行者或其组身份) 2.1 SetUID (1)SetUID的功能 ①只有可以执行的二进制程序才能设定SUID权限.用来临时提升执行程序(或某条命令)的用户身份 ...
- SpringBoot+Vue前后端分离,使用SpringSecurity完美处理权限问题(一)
当前后端分离时,权限问题的处理也和我们传统的处理方式有一点差异. 笔者前几天刚好在负责一个项目的权限管理模块,现在权限管理模块已经做完了,我想通过5-6篇文章,来介绍一下项目中遇到的问题以及我的解决方 ...
随机推荐
- Codeforces 354C 暴力 数论
题意:给你一个数组,你可以把数组中的数减少最多k,问数组中的所有数的GCD最大是多少? 思路:容易发现,GCD的上限是数组中最小的那个数,而因为最多可以减少k,及可以凑出来的余数最大是k,那么GCD的 ...
- java命令-jstat/ javap
jstat命令对应用程序资源和性能进行实时监控 常用参数列举如下: 1. jstat -class pid 显示加载class的数量.所占空间.所耗时间等信息 2.jstat -compiler pi ...
- SGU438 The Glorious Karlutka River =)
传送门 sgu原来搬到cf了呀点了好几个链接才找到233 传说中的动态流(?) 反正很暴力就对了QwQ 有容量限制->拆点 对于每个点拆成入点和出点 时间限制->分层 对于每个时刻的每个石 ...
- TCP练习
然后基本的socket编程,用TCP做两个进程互相发消息.C端主动发hello,S端收到后回world. #include <stdio.h> #include <stdlib.h& ...
- delphi 使电脑睡眠代码
//提升进程令牌函数 function AdjustProcessPrivilege(ProcessHandle:THandle;Token_Name:Pchar):boolean; var Toke ...
- xcode Delete current line
Delete a line like eclipse CTRL+D (tested on Xcode 4.5.1) : First of all, change these rights : sudo ...
- js判断是否安装app,安装打开app
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- error C4996: 'stricmp': The POSIX name for this item is deprecated
转自VC错误:http://www.vcerror.com/?p=164 问题描述: 最近使用了VS2012,在使用 stricmp和ltoa函数的时候,报出了以下错误信息 error C4996: ...
- PHP面试 AJAX基础内容
AJAX基础内容 Ajax的基本工作原理 Ajax基础概念:通过在后台与服务器进行少量数据交换,Ajax可以使用网页实现异步更新 Ajax工作原理:XMLHttpRequest是Ajax的基础 ...
- 使用 U 盘装个 winXP 原版镜像玩红警
winXP 自身是不支持 U 盘启动的,所以用 poweriso 直接制作的 U 盘是没用的 可以使用 wintoflash 操作,下载地址: https://wintoflash.en.softon ...