权限设计,可控制每个接口的使用。
权限功能设计说明
1 功能介绍
1.1 已实现功能
用户管理
Ø 新增用户信息
Ø 删除用户信息
Ø 修改用户信息
Ø 查看用户信息
Ø 分配角色
角色管理
Ø 新增用户角色
Ø 删除用户角色
Ø 修改用户角色
Ø 查询用户角色
Ø 分配用户
权限验证
验证匿名用户权限:匿名用户只能访问登录、获取验证码、判断是否登录等无需授权功能。
验证授权用户权限:只允许访问公共接口(获取下拉数据、获取地址信息等接口)和已授权接口。
1.2 用户管理模块
见表结构介绍。
1.3 角色管理模块
见表接口介绍。
1.4 验证功能验证模块
未登录验证
客户端访问接口:访问服务器某个接口并至少传一个参数(这里用的是页面唯一编码)。
服务端验证权限:判断当前接口是否允许匿名用户访问。是:允许访问;否:不允许访问。
已登录验证
客户端访问接口:访问服务器某个接口并至少传一个参数(这里用的是页面唯一编码)。
服务端验证权限:判断当前接口是否允属于公共接口,是:允许访问;否:判断当前用户是否拥有该权限,是:允许访问;否:不允许访问。
权限验证流程图
1.5 表结构
Menu(菜单表)
用于存放菜单信息,包括菜单名称、图标、样式、菜单对应的URL等,多级菜单需要存菜单级别、父级ID。
MenuFunction(菜单功能表)
用于存放菜单所对应的接口编码、接口所属菜单(如果一个接口存在多个菜单下,同时需要存多条数据)、接口所属页面(只所以要存页面是为了控制页面上按钮的权限,方便前端做权限验证)、接口所属操作ID(页面按钮ID)。
Role(角色表)
用于处方用户和角色关系,目前用户和角色做的是一对一关系。
RoleFunction(角色功能表)
用于存放角色和功能接口对应关系,此表为业务核心表。用于验证用户是否有访问权限。
表结构详情:
Menu(菜单表)
名称 |
代码 |
主键ID |
ID |
菜单URL |
MenuUrl |
菜单名称 |
PageName |
状态(1:启用,0禁用) |
Status |
菜单级别 |
Level |
父级ID |
ParentID |
NO |
NO |
创建时间 |
CreateTime |
修改时间 |
ModifyTime |
排序 |
Sort |
icon |
icon |
MenuFunction(菜单功能表)
名称 |
代码 |
主键ID |
ID |
功能编码(功能分类) |
FuncCategory |
功能名称 |
Name |
菜单ID |
MenuID |
页面编码 |
PageCode |
操作id(页面按钮ID) |
OperateID |
接口id |
Interface |
类型(1:默认接口,2:对外接口,3:通用接口) |
Type |
NO |
NO |
创建时间 |
CreateTime |
修改时间 |
ModifyTime |
排序 |
Sort |
状态(1:启用,2:禁用) 接口访问级别0匿名1登录即可访问2授权才能访问 |
Status AccessLevel |
Role(角色表)
名称 |
代码 |
ID |
ID |
角色名称 |
RoleName |
自动排序 |
NO |
状态 |
Status |
创建时间 |
CreateTime |
修改时间 |
ModifyTime |
用户微信昵称 |
CreateID |
ModifyID |
ModifyID |
RoleFunction(角色功能表)
名称 |
代码 |
主键ID |
ID |
自增量 |
NO |
角色ID |
RoleID |
菜单id |
MenuID |
功能id |
FuncID |
功能分类 |
FuncCategory |
按钮标识 |
OperateID |
接口id |
Interface |
页面编码 |
PageCode |
状态(1.启用,2.禁用) |
Status |
类型(1.菜单,2.功能,3.第三方接口) |
Type |
创建时间 |
CreateTime |
修改时间 |
ModifyTime |
排序 |
Sort |
接口访问级别0匿名1登录即可访问2授权才能访问 |
AccessLevel |
1.6 代码
前端
1. 封装get、post、getAsnyc和postAsync方法,传入pageCode参数。
2. 页面添加pageCode全局变量
3. 菜单根据用户权限自动加载
4. 页面按钮权限控制(在页面控制按钮权限,减少接口调用的压力)
后端
Ø 权限验证公共类:
1. 验证当前接口是否属于看匿名访问接口
2. 验证当前接口是否已授权
Ø 调用权限验证:
1. Base类添加权限验证方法,此处分三部分验证1、验证当前调用的接口是否属于可匿接口;2验证当前用户是否登录超时;3、验证当前接口是否允许调用。
2. 集成Base类,执行功能前调用Base类中权限验证方法。
权限设计,可控制每个接口的使用。相关推荐
- Java权限设计与控制
1.场景还原 近期,由于项目中要引用权限模块,于是笔者趁着空暇时间写了一个权限控制的小Demo,现在跟大伙讲讲权限的原理. 2.权限数据库设计 user:用户表 user_role:用户角色表(用户跟 ...
- RBAC、控制权限设计、权限表设计 基于角色权限控制和基于资源权限控制的区别优劣
RBAC.控制权限设计.权限表设计 基于角色权限控制和基于资源权限控制的区别优劣 一.介绍 二.基于角色的权限设计 三.基于资源的权限设计 四.主体.资源.权限关系图 主体.资源.权限相关的数据模型 ...
- Java数据库行列级数据权限控制_关于数据库表字段的数据权限设计
吐槽:刚在同事的帮忙下,把maven工程成功导入到eclipse,期间遇到的最大问题就是安装eclipse插件,花费了其中大部分的时间 现在做的研发产品,遇到的一个新的需求是"控制外部系统对 ...
- 基于shiro的权限设计
shiro介绍 Apache shiro是一个权限控制框架,它将安全认证抽取出来,实现用户身份认证,权限授权,加密,会话管理等功能,是一个通用的安全认证框架,而且还可以用于分布式集群.功能如下 1.验 ...
- 跟我学Springboot开发后端管理系统8:Matrxi-Web权限设计实现
上篇文章讲述了Matrix-web整体实现的权限控制的思路.现在来回顾一下: 首先,用户需要登录,填用户名.密码,后端接收到登录请求,进行用户.密码的校验,校验成功后则根据用户名生成Token,并返回 ...
- 跟我学Springboot开发后端管理系统7:Matrxi-Web权限设计
Matrxi-Web权限设计 对于一个后端系统来说,权限是基础设施,是安全保障.没有权限,系统可能随时面临各种风险,所以权限设计对后端系统来说至关重要.在Javaweb开发中,有很多权限开发的框架,比 ...
- 权限设计的一些想法和思考
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:cross my.oschina.net/cloudcros ...
- python开发企业管理平台_我的第一个python web开发框架(34)——后台管理系统权限设计...
框架底层和接口终于改造完成了,小白再次找到老菜. 小白:老大,上次你对后台权限系统简单的讲了一下,我一点头绪都没有,现在有空完整的说一说吗? 老菜:说到权限系统,要讲明白真不容易,权限系统并不是越复杂 ...
- 浅谈OFBiz之权限设计
简介 Apache Open For Business(Apache OFBiz) 是Apache开源的一个经典ERP项目.它提供了一套企业应用,用于集成以及自动化一些企业的"商业流程&qu ...
- 一个页面区分管理者和普通用户如何设计_产品经理要做的操作权限/数据权限设计...
产品经理在工作中还需要知道一个:用户权限设计能力.权限设计理念贯穿于后台产品.以及用户前端产品. 权限能力包括两类:数据权限.系统操作权限 有的人会好奇,为什么前端产品会有有权限管理的要求?接下来我将 ...
最新文章
- RCP中product文件的用法
- [20180602]函数与标量子查询3.txt
- templateclass T函数模板
- unity3d UGUI Scroll View的使用
- 三因子两水平doe_DOE试验设计案例
- java基础之访问控制符
- axios nodejs 上传图片_vue项目中使用axios上传图片等文件操作
- 【ArcGIS微课1000例】0021:ArcToolBox工具箱功能与环境概述
- 算法(8)-leetcode-explore-learn-数据结构-链表
- java多线程教程_java 基础教程之多线程详解及简单实例
- 【数值分析】数值分析的微积分学基础
- “深度学习已死,可微编程万岁!”LeCun老师为何又语出惊人?
- windows 2003活动目录更名操作[图]
- 垂直居中小记 line-height table vertical-align:middle
- 开源日志系统log4cplus(五)
- BZOJ——T 1612: [Usaco2008 Jan]Cow Contest奶牛的比赛
- 广州大学计算机考研有歧视吗,本科985,考研被调剂去了普通一本广州大学,有必要读吗?...
- cad图层置顶的lisp_cad中的底图老置顶,如何让它永久置底?
- 爬虫笔记41之反爬系列四:字体反爬、JS反爬
- AD仿真功能描述文档
热门文章
- 转《DB2操作指南及命令大全》
- 下载苹果APP历史版本
- android 命令pm 全称 packagemanager,关于android:PackageManager安装应用笔记
- getParameterValues
- 基于JSP+Servlet的旅游景点服务平台(旅游网站)
- 【单片机】2.1 AT89S52单片机的硬件组成
- python之简易飞机大战
- python短时傅里叶变换_短时傅里叶变换(Short Time Fourier Transform)原理及 Python 实现...
- 高等数学复习之空间解析几何
- CentOS安装微软雅黑字体