权限管理指的是用户授权,与拦截器没有关系。拦截器只是一个技术,也可以用别的技术来实现的。别人问你权限管理,可不要和人家说什么拦截器。要说用户授权

前一篇文章是把实现了不同的用户呈现不用的菜单。这一篇文章要实现的是不同的操作权限的控制,因为在菜单下有操作权限,我们现在就控制操作。

我们的权限拦截就是指各种菜单下的操作也要拦截。只要是不符合自己角色的访问操作都要拦截掉。

拦截流程如下:

我们这里不写拦截器,我们这篇文章就是讲一下怎么根据用户的角色来得到用户的操作权限。

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的更多相关文章

  1. 044医疗项目-模块四:采购单模块—采购单保存(Dao,Service,Action三层)

    我们上上一篇文章(042医疗项目-模块四:采购单模块-采购单明细添加查询,并且把数据添加到数据库中)做的工作是把数据插入到了数据库,我们这篇文章做的是042医疗项目-模块四:采购单模块-采购单明细添加 ...

  2. Linux 文件和目录的权限设置 - umask(默认权限),chmod(改变权限)

    1. chmod 改变已有目录或文件的权限 chmod 设置已有目录或文件的权限.可以为指定范围的用户添加或删除权限. 权限范围的表示法如下: u:User,即文件或目录的拥有者: g:Group,即 ...

  3. springboot+mybatis+shiro项目中使用shiro实现登录用户的权限验证。权限表、角色表、用户表。从不同的表中收集用户的权限、

    要实现的目的:根据登录用户.查询出当前用户具有的所有权限.然后登录系统后.根据查询到的权限信息进行不同的操作. 以下的代码是在搭好的框架之下进行的编码. 文章目录 核心实现部分. 第一种是将用户表和角 ...

  4. java权限管理与用户角色权限设计

    java权限管理与用户角色权限设计 实现业务系统中的用户权限管理 B/S系统中的权限比C/S中的更显的重要,C/S系统因为具有特殊的客户端,所以访问用户的权限检测可以通过客户端实现或通过客户端+服务器 ...

  5. 005医疗项目-模块一:用户的查找:1.用户表查询的sql语句

    这是医疗项目的第一个模块:做一个用户的查询,可以根据用户的账号,用户的名称,单位的名称,用户的类型去查询.要求效果如下:

  6. 046医疗项目-模块四:采购单模块—采购单审核(Dao,Service,Action三层)

    当医院把采购单提交之后,由监管单位进行采购单审核,由卫生院及卫生局进行审核.卫生局可以审核所有医院创建的采购单,卫生院只审核本辖区医院创建的采购单. 操作流程: 点击"采购单审核" ...

  7. SqlServer设置特定用户操作特定表(插入、删除、更新、查询 的权限设置)

    目录 一.需求场景: 二.操作步骤: 表上右键选择[属性],选择[权限]选项卡: 点击[搜索],在弹出的框中点击[浏览],选择需要设置的用户: 在上面点击[确定]后,就可以在[权限]选项卡中看到权限列 ...

  8. linux(raspbian)下mysql的安装,权限设置和用户管理

    一 MySQL安装:(1) 使用apt-get安装, 由于raspbian是基于Debian的自由操作系统,debian默认自带apt-get指令安装应用因此可以使用来安装 sudo apt-get ...

  9. 远程服务器设置Mysql的操作权限

    mysql -u root -p; root用户输入密码登录mysql服务器 select host, user  from mysql.user; 查询数据库的所有用户以前权限的ip   host: ...

随机推荐

  1. 你真的了解UIView吗?

    一:首先查看一下关于UIView的定义 NS_CLASS_AVAILABLE_IOS(2_0) @interface UIView : UIResponder <NSCoding, UIAppe ...

  2. IOS整体项目层级构建

    在创建IOS项目时,若有一个比较明确的层级架构,将对于今后代码的维护或者功能的扩展很有帮助:本文将通过一个实例来展现我对于层级的一些观点:里面有一些零碎的知识点可能无法全部介绍,到时提供源代码进行下载 ...

  3. AFNetworking简单用法

    GET请求 AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; [manager GET:URL parameters:ni ...

  4. iOS 为视图添加抖动效果

    抖动效果在开发中比较少用到,不过有时使用了确有个很好的装逼效果,用的时候就例如一些用户错误操作之类的 效果如下,不过gif看到的效果没实际的好看 上代码 - (void)shakeAnimationF ...

  5. 常见HTTP状态码

    常见HTTP状态码 200 OK 301 Moved Permanently 302 Found 304 Not Modified 307 Temporary Redirect 400 Bad Req ...

  6. 1.8 基础知识——GP2.7 识别和卷入干系人(Stakeholder) & GP2.9 质量保证(QA)

    GP2.7 识别和卷入干系人(Stakeholder) GP2.7 Identify and involve the relevant stakeholders of XXX process as p ...

  7. android Gui系统之SurfaceFlinger(4)---Vsync(1)

    8.Vsync 8.1概论 VSYNC(Vertical Synchronization)是一个相当古老的概念,对于游戏玩家,它有一个更加大名鼎鼎的中文名字—-垂直同步. “垂直同步(vsync)”指 ...

  8. 在【Xamarin+Prism开发详解三:Visual studio 2017 RC初体验】中分享了Visual studio 2017RC的大致情况,同时也发现大家对新的Visual Studio很是感兴趣。于是发时间深入研究了一下Visual Studio 2017RC 是不是和微软Connect()://2016上说得一样神。

    总共列出了12点,耐心点慢慢看! 1,添加了不少[代码样式]的设置项目. 通过合理的设置每个人都能写出优美的代码,而且团队项目也可以达到统一代码风格. this首选项:可以设置[字段,属性,方法,事件 ...

  9. 今天说一下 Group by 这个东西

    group by 这个关键字,这个语句太平凡了~基本上只要有报表的地方,就会有它的身影. 常规用法就是 INSERT INTO #TypeValue ( TypeID, Col2 ) , N , N ...

  10. python scrapy版 极客学院爬虫V2

    python scrapy版 极客学院爬虫V2 1 基本技术 使用scrapy 2 这个爬虫的难点是 Request中的headers和cookies 尝试过好多次才成功(模拟登录),否则只能抓免费课 ...