权限设计(下) - 细说权限设计

什么是权限管理

一般来说,只要有用户参与的系统,那么都要有权限管理,尤其是一些后台的管理系统,

权限管理可以实现对用户访问系统的控制,按照安全规则或者相关策略的控制,可以使用户访问到只属于自己被授权的相关(比如菜单,或者页面资源)

权限管理包括用户认证和授权两模块

用户认证

用户认证,说白了就是登录的时候进行的验证,验证用户身份合法性。

最常见的用户身份验证的方式:

1、用户名 + 密码

2、手机号 + 验证码

3、证书验证

来看一下流程图:

 

 

用户授权

用户授权,浅白点讲就是权限访问控制,在用户认证通过后,系统对用户访问资源进行控制,用户具有资源的访问权限方可访问对于的资源

 

数据库模型

上篇文章中讲到了5张表,其实是由6张表而来,但是由于第六章表资源是可以整合的,所以可以避免冗余而采用了5张表,最简单的权限控制是至少由5张表来构成的

主体(账号、密码)

权限(权限名称、资源名称、资源访问地址)

角色(角色名称)

角色和权限关系(角色id、权限id)

主体和角色关系(主体id、角色id)

 

分配权限

用户需要被分配到相应的权限才可访问相应的资源,这些权限信息需要保存

把用户信息、权限管理、用户分配的权限信息写到数据库(权限数据模型)

 

 

基于角色的访问控制

就是判断用户是否是项目经理还是普通员工,访问的资源就不同

比如

if (user.role = [pm]) {

// 访问

}

if (user.role != [pm]) {

// 访问

}

这么做没问题,但是不容易维护,一旦权限变更,那么就要变更代码

基于资源的访问控制

if (user have [pm]) {

// 访问

} else if (user have [boss]) {

// 访问

}

这么做只要针对user配置权限,把对应的资源给他,那么就能访问,不需要每次修改代码,增加了可维护性

 

基于url拦截的方式实现

举个栗子:使用springMVC拦截器实现

拦截对应url,url配置一个私有拦截list,拦截到的list必须进行验证,

进入拦截器验证后查看是否存在token信息,如果不存在,拦截返回到web登录页面,或者json错误信息给手机端

同时验证的时候针对资源,需要判断是否能够访问,可以第一次查询数据库的资源信息缓存到session或者redis中

使用权限管理框架实现

1、spring security (目前连spring自己都抛弃了这个框架,因为太重了,现在拥抱了Apache Shiro)

2、Shiro (to be continued...)

 

时间: 2024-11-08 23:54:24

权限设计(下) - 细说权限设计的相关文章

ASP.NET MVC+EF框架+EasyUI实现权限管理系列(24)-权限组的设计和实现(附源码)(终结)

原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(24)-权限组的设计和实现(附源码)(终结) ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇)   (1):框架搭建    (2):数据库访问层的设计Demo    (3):面向接口编程   (4 ):业务逻辑层的封装          (5):前台Jquery easyUI实现   (6):EF上下文实例管理    (7):DBSession的封装   (8):DBSession线程内唯一       

WebGIS中快速整合管理多源矢量服务以及服务权限控制的一种设计思路

 文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.背景 在真实项目中,往往GIS服务数据源被其他多个信息中心或者第三方公司所掌控,当需要快速搭建一套能够对所有GIS数据,根据权限不同.需求不同.而进行展示的系统.为了避免在代码层面上过多的定制化开发,我们需要能提出一种可以整合管理多源矢量服务并进行权限控制的架构. 目前商业GIS软件中,Esri公司给出了其Portal产品,可以对arcgis Server发布的各

通用权限管理设计 之数据权限

本文将对这种设计思想作进一步的扩展,介绍数据权限的设计方案. 权限控制可以理解,分为这几种 : [功能权限]:能做什么的问题,如增加产品.[数据权限]:能看到哪些数据的问题,如查看本人的所有订单.[字段权限]:能看到哪些信息的问题,如供应商账户,看不到角色. 部门等信息. 上面提到的那种设计就是[功能权限],这种设计有一定的局限性,对于主体,只能明确地指定.对于不明确的,在这里可能就没办法处理.比如下面这几种情况: Java代码   数据仅当前部门及上级可见   数据仅当前用户(本人)可见  

通用权限系统框架功能实现设计

1  开发环境技术:B/S(.NET C# ) 1.Windows 7及以上 (支援最新Win 8) 2.Microsoft Visual Studio 2013 C#.NET 3..NET Framework 4.0及以上 (支援最新4.5版本) 4.SQL Server 2008 R2及以上 (支援2012/2014)框架特点 2  系统简介 1.帮企业快速地实现各种通用功能,结合系统现有的通用权限管理功能. 2.快速地开发出各种项目应用系统.让企业开发一个系统变得非常轻松. 3.符合RBA

操作-角色-菜单表,修改权限问题中关于数据库设计问题

问题描述 角色-菜单表,修改权限问题中关于数据库设计问题 1C 现在在做的一个项目中,需要对于角色做相关权限设定,而这些权限是跟菜单对应的,比如说,"添加用户"是作为一个菜单出现的,而要使角色X具有"添加用户"的权限,就需要角色X获取菜单"添加用户".所以有一个角色-菜单表.主要就是"idroleIdmenuIdvalue"这四个字段.现在有一个问题就是,我对一个角色设置完权限之后,在这个表中会生成多条数据.而如果去修改这个角

ASP.NET MVC+EF框架+EasyUI实现权限管理系列(13)-权限设计

原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(13)-权限设计 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇)   (1):框架搭建    (2):数据库访问层的设计Demo    (3):面向接口编程   (4 ):业务逻辑层的封装    (5):前台Jquery easyUI实现    (6):EF上下文实例管理    (7):DBSession的封装   (8):DBSession线程内唯一     (9):TT摸版的学习    (10):V

架构设计分享之权限系统(看图说话)

架构设计分享之权限系统(看图说话) 前面一篇文章<最近架构随想>,我提到架构设计的一些构想,其实也是对之前项目经验的一些归纳及总结.今天我们就以权限系统作为切入点,谈一谈怎么设计权限系统以及怎么做到系统具有以下特性: Organized:如果系统组织比较好,可以起到事半功倍的效果. Encapsulated:对功能,结构,数据进行有效的封装,会使系统维护变得更加容易. Reusable:对常用功能以及组件进行有效的封装,可以使系统变得结构清晰且方便维护. Extensible:在设计系统的时候

thinkphp-ThinkPHP权限控制下的数据库结构

问题描述 ThinkPHP权限控制下的数据库结构 在权限控制下的数据库结构表的具体是什么意思,个人表示看不懂里面的表 解决方案 不知道你的数据库是怎么设计的,就我接触的一般而言,举例来说: sys_group是菜单分组表,sys_node为菜单节点表,内有group_id字段索引至sys_group,多对一的关系,表示多个节点分为一组. sys_role_user为用户角色表,内有role_id和user_id字段分别索引至角色表sys_role和用户表sys_user,多对多的关系,表示用户与

php下的权限算法的实现_php技巧

权限设计 大概有这几种模式 用户+组+角色+权限 用户+组+权限 用户+角色+权限 用户+权限 最近看了别人的设计方法大多以"整数"来表示权限值如添加.浏览.删除和修改分别用1.2.4.8这几个整数来代替不过各人的做法有所不同举例如下 1.用2的n次幂组成权限值的集合如1.2.4.8.16...某用户的权限值为其子集中的整数之和如 7=1+2+45=1+4.如果要从数据库检索包含某几种权限的用户则先把这几种权限值相加假设和为k然后select * from table where 1 

CentOS下ACL权限控制详解

  ACL权限控制 设置ACL权限:setfacl 查看ACL权限:getfacl ACL权限控制主要目的是提供传统的owner,group,other的read,wirte,execute权限之外的具体权限设置,可以针对单一用户或组来设置特定的权限 比如:某一目录权限为 drwx------ 2 root root 4096 03-10 13:51./acldir 用户user对此目录无任何权限因此无法进入此目录,ACL可单独为用户user设置这个目录的权限,使其可以操作这个目录 ACL启动