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

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

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

拦截流程如下:

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

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);
}

下一篇文章我们就要写拦截器了

最新文章

  1. 树链剖分+线段树 HDOJ 5029 Relief grain(分配粮食)
  2. poj 1835 宇航员
  3. Linux 设备驱动程序 proc seq
  4. Java--剑指offer(3)
  5. HookIAT的启动程序
  6. Spring中HibernateCallback的用法(转)
  7. 写一段方便的SQL 循环查每一天的数据
  8. window成员和document成员
  9. mysql用户修改登录密码及开启远程登录
  10. css3设置box-pack和box-align让div里面的元素垂直居中
  11. 基于Spring的Web缓存
  12. JAVA三大特性之一——封装
  13. sqoop 操作从hdfs 导入到mysql中语句
  14. C++11新特性之tie、tuple的应用
  15. 使用埃拉托色尼筛选法(the Sieve of Eratosthenes)在一定范围内求素数及反素数(Emirp)
  16. mysql数据库的增量备份和全备
  17. Rhel6.5 相关操作
  18. day 7-17 多表查询
  19. LDAP解决多个服务器多个samba,不能指定多个samba域 的问题
  20. 服务容错保护断路器Hystrix之七:做到自动降级

热门文章

  1. 自定义Cell的方法
  2. nodejs API
  3. FTP远程文件传输命令
  4. SQLServer安装正常服务启动正常却无法连接
  5. mvc 开发razor模式注意事项
  6. Linux- Nginx简单的负载均衡(一)
  7. Biee 11g权限详解
  8. 纯css实现照片墙3D效果
  9. ImitateLogin新增插件机制以及又一个社交网站的支持
  10. Linux学习--------二