053医疗项目-模块五:权限设置-将用户操作权限写入Session
权限管理指的是用户授权,与拦截器没有关系。拦截器只是一个技术,也可以用别的技术来实现的。别人问你权限管理,可不要和人家说什么拦截器。要说用户授权
前一篇文章是把实现了不同的用户呈现不用的菜单。这一篇文章要实现的是不同的操作权限的控制,因为在菜单下有操作权限,我们现在就控制操作。
我们的权限拦截就是指各种菜单下的操作也要拦截。只要是不符合自己角色的访问操作都要拦截掉。
拦截流程如下:

我们这里不写拦截器,我们这篇文章就是讲一下怎么根据用户的角色来得到用户的操作权限。
sql如下:
select bss_sys_operate.method actionUrl,
bss_sys_operate.operatename operationName,
bss_sys_operate.operateid operationId
from bss_sys_operate where bss_sys_operate.operateid in
( --角色范围内的操作权限集合
select bss_sys_roleoperate.operateid
from bss_sys_role,
bss_sys_rolesys,
bss_sys_rolenode,
bss_sys_rolemodule,
bss_sys_roleoperate where bss_sys_role.roleid = bss_sys_rolesys.roleid
and bss_sys_rolenode.rsid = bss_sys_rolesys.rsid
and bss_sys_rolemodule.rnid = bss_sys_rolenode.rnid
and bss_sys_roleoperate.rmid = bss_sys_rolemodule.rmid
and bss_sys_role.roleid = 'A1657D9C6C7D47B59A99132A5ACE1A2E' )
查询结果如下:
上面查出来的就是卫生局的操作权限。
Sql写好之后。我们就来写Mapper代码:
public List<Operation> findOperatByRoleid(String roleid) throws Exception;
<select id="findOperatByRoleid" parameterType="java.lang.String"
resultType="yycg.base.vo.Operation"
> select bss_sys_operate.method actionUrl,
bss_sys_operate.operatename operationName,
bss_sys_operate.operateid operationId
from bss_sys_operate where bss_sys_operate.operateid in
( <!-- 角色范围内的操作权限集合 -->
select bss_sys_roleoperate.operateid
from bss_sys_role,
bss_sys_rolesys,
bss_sys_rolenode,
bss_sys_rolemodule,
bss_sys_roleoperate where bss_sys_role.roleid = bss_sys_rolesys.roleid
and bss_sys_rolenode.rsid = bss_sys_rolesys.rsid
and bss_sys_rolemodule.rnid = bss_sys_rolenode.rnid
and bss_sys_roleoperate.rmid = bss_sys_rolemodule.rmid
and bss_sys_role.roleid = #{roleid} ) </select>
写好Mapper代码之后我们来写service代码:
List<Operation> operationlist=this.findOperatByRoleid(roleid);//根据用户的角色id得到用户的操作权限。
activeUser.setOperationList(operationlist);//给用户赋予他的操作权限。
//根据角色的id查找角色的可用权限
@Override
public List<Operation> findOperatByRoleid(String roleid) throws Exception {
return sysuserMapperCustom.findOperatByRoleid(roleid);
}
下一篇文章我们就要写拦截器了
053医疗项目-模块五:权限设置-将用户操作权限写入Session的更多相关文章
- 044医疗项目-模块四:采购单模块—采购单保存(Dao,Service,Action三层)
我们上上一篇文章(042医疗项目-模块四:采购单模块-采购单明细添加查询,并且把数据添加到数据库中)做的工作是把数据插入到了数据库,我们这篇文章做的是042医疗项目-模块四:采购单模块-采购单明细添加 ...
- Linux 文件和目录的权限设置 - umask(默认权限),chmod(改变权限)
1. chmod 改变已有目录或文件的权限 chmod 设置已有目录或文件的权限.可以为指定范围的用户添加或删除权限. 权限范围的表示法如下: u:User,即文件或目录的拥有者: g:Group,即 ...
- springboot+mybatis+shiro项目中使用shiro实现登录用户的权限验证。权限表、角色表、用户表。从不同的表中收集用户的权限、
要实现的目的:根据登录用户.查询出当前用户具有的所有权限.然后登录系统后.根据查询到的权限信息进行不同的操作. 以下的代码是在搭好的框架之下进行的编码. 文章目录 核心实现部分. 第一种是将用户表和角 ...
- java权限管理与用户角色权限设计
java权限管理与用户角色权限设计 实现业务系统中的用户权限管理 B/S系统中的权限比C/S中的更显的重要,C/S系统因为具有特殊的客户端,所以访问用户的权限检测可以通过客户端实现或通过客户端+服务器 ...
- 005医疗项目-模块一:用户的查找:1.用户表查询的sql语句
这是医疗项目的第一个模块:做一个用户的查询,可以根据用户的账号,用户的名称,单位的名称,用户的类型去查询.要求效果如下:
- 046医疗项目-模块四:采购单模块—采购单审核(Dao,Service,Action三层)
当医院把采购单提交之后,由监管单位进行采购单审核,由卫生院及卫生局进行审核.卫生局可以审核所有医院创建的采购单,卫生院只审核本辖区医院创建的采购单. 操作流程: 点击"采购单审核" ...
- SqlServer设置特定用户操作特定表(插入、删除、更新、查询 的权限设置)
目录 一.需求场景: 二.操作步骤: 表上右键选择[属性],选择[权限]选项卡: 点击[搜索],在弹出的框中点击[浏览],选择需要设置的用户: 在上面点击[确定]后,就可以在[权限]选项卡中看到权限列 ...
- linux(raspbian)下mysql的安装,权限设置和用户管理
一 MySQL安装:(1) 使用apt-get安装, 由于raspbian是基于Debian的自由操作系统,debian默认自带apt-get指令安装应用因此可以使用来安装 sudo apt-get ...
- 远程服务器设置Mysql的操作权限
mysql -u root -p; root用户输入密码登录mysql服务器 select host, user from mysql.user; 查询数据库的所有用户以前权限的ip host: ...
随机推荐
- 我的第一节Android课
我的第一节安卓课程,今天非比寻常的一天,我开始了我程序猿之路的第一节安卓课程,安卓课程只是我的一个兴趣班,我的本专业是java开发,因为喜欢做一个属于自己的一个手机APP,就选多个一样技能,毕竟十八般 ...
- 转:能和LoadRunner匹敌的VS2010/2012Web负载测试
原文出处:http://www.cnblogs.com/aarond/archive/2013/04/18/performance.html VS自带的Web负载测试真的很大程度上能和专业的loadr ...
- WPF学习之路(七)应用程序和窗口
手动创建应用程序 1.创建Empty Project 2.添加引用 3.添加 ManualApp.cs 并添加下面的代码 [STAThread] public static void Main() { ...
- LoadRunner性能测试巧匠训练营
<LoadRunner性能测试巧匠训练营>基本信息作者: 赵强 邹伟伟 任健勇 丛书名: 实战出版社:机械工业出版社ISBN:9787111487005上架时间:2015-1-7出版日期: ...
- 记一次ORACLE的UNDO表空间爆满分析过程
这篇文章是记录一次ORACLE数据库UNDO表空间爆满的分析过程,主要整理.梳理了同事分析的思路.具体过程如下所示: 早上收到一数据库服务器的UNDO表空间的告警邮件,最早一封是7:55发出的(监控作 ...
- php配置php-fpm启动参数及配置详解
约定几个目录 /usr/local/php/sbin/php-fpm/usr/local/php/etc/php-fpm.conf/usr/local/php/etc/php.ini一,php-fpm ...
- HBase应用开发回顾与总结系列之四:HBase配置管理类接口设计
利用Eclipse进行HBase应用开发时,至少需要确定三个配置信息,如下表所示: #hbase config #HMaster服务部署主机及端口号 hbase.master=hdp-wuyong ...
- Swing应用开发实战系列之五:后台日志信息前台监控器
作为一个程序设计人员,我们深知日志的重要性,对于日志的监控,我们通常不外乎采用以下两种方式:日志文件方式和后台打印方式,常规情况下,这两种日志监控方式完全可以满足我们对日志监控的需要.但是,当我们用S ...
- Linux信号类型说明
说明 在Linux系统开发中经常要使用到信号来实现异步通知机制.而在Linux系统中信号有很多种,也不用全部记住,学习几种常见的信号,学会使用即可:当然也要知道用哪种方式能够发送这样的信号. 查看li ...
- ES6 Set/WeakSet
ES6里加入了一个新数据解构Set,和Java的Set一样,它里面不存放重复的元素.Set实现为一个类,使用时需要先new. var s1 = new Set() s1.add(1) s1.add(2 ...