思路:分别在web.xml配置过滤器以及在applicationContext.xml去配置

实现步骤:1、在pom.xml里引入shiro的坐标

2、在web.xml里配置shiro过滤器

3、在applicationContext.xml里配置安全管理器以及校验过滤器

4、自定义realm对象(认证/授权)

5、将realm注入到manager中注册

一、 使用shiro的方法注解方式进行权限控制

思路:在applicationContext.xml里使用aop去实现

 

实现步骤:1、在spring文件中配置开启shiro注解支持

2、修改事务注解

3、在Service方法上使用shiro注解

一、 使用shiro的标签进行权限控制

思路:这些标签用于JSP页面,控制一些元素是否可见

实现步骤:

1、 在页面引入shiro标签库

2、 通过shiro自带标签控制按钮是否显示

一、 总结shiro提供的权限控制方式

思路:1、URL级别粗粒度权限控制 2、方法级别细粒度权限控制(基于代理技术实现)

1、 通过shiro自定义标签,实现页面元素显示控制(基于标签技术实现)

第一种:URL级别粗粒度权限控制(基于过滤器实现)

配置web.xml 的shiroFilter 拦截 /*

在spring的applicationContext*.xml 配置文件中配置同名bean,配置filterChainDefinitions拦截控制规则

xxx.html* = anon (未登录可以访问)

xxx.html* =authc (必须登录才能访问)

xxx.html* = perms[权限] (需要特定权限才能访问)

xxx.html* = roles[角色] (需要特定角色才能访问)

第二种:方法级别细粒度权限控制(基于代理技术实现)

在spring的applicationContext*.xml 配置 spring aop 对spring管理bean对象开启shiro注解支持

@RequiresPermissions(权限)  需要特定权限才能访问

@RequiresRoles(角色)  需要特定角色才能访问

@RequiresAuthentication 需要认证才能访问

第三种:通过shiro自定义标签,实现页面元素显示控制(基于标签技术实现)

<shiro:authenticated>登录后才能访问

<shiro:hasPermission name="abc">需要特定权限才能访问

<shiro:hasRole name="abc">需要特定角色才能访问

一、 用户认证、授权功能的实现

思路:在UserAction的login方法里使用Subject完成

实现步骤:

1、 在UserAction的login方法里得到Subject对象

2、 封装表单提交的用户名和密码

3、 调用subject的login方法

4、 自定义realm对象(认证|授权)

二、 完成菜单列表的显示功能

思路:菜单存在上下级关系(树形结构),通过easyUI提供的treegrid控件完成

实现步骤:

1、 将需要的数据导入到数据库

2、 修改menu.html 的treegird的url属性

3、 编写MenuAction 提供list 查询所有菜单的方法

4、 编写Service和DAO

一、 完成菜单数据的添加功能

思路:在列表显示的前提下完成添加

实现步骤:

1、 检查页面表单元素 name是否与实体类匹配

2、 父菜单项使用combotree展示

3、 为保存按钮绑定事件,提交表单

4、 在MenuAction 添加 save保存方法

5、 编写MenuService

最新文章

  1. html中用div代替textarea实现输入框高度随输入内容变化
  2. flask 添加日志
  3. fcntl 获取文件状态标志
  4. cocos基础教程(8)粒子效果
  5. css读书笔记2:css工作原理
  6. HDU 1869 六度分离
  7. HDU 4119Isabella&#39;s Message2011成都现场赛I题(字符串模拟)
  8. 201521123069 《Java程序设计》 第12周学习总结
  9. python中打印中文
  10. Shell命令 中|| &amp;&amp;使用
  11. 062 hive中的常用方法(case,cast,unix_timestamp)
  12. Oracle分析函数简析
  13. 代理神器allproxy
  14. Axure 地区选择(选择省份之后可以选择对应的地级市)
  15. python解析XML笔记(etree)
  16. git——添加远程库
  17. require/load/include/extend的区别
  18. mvn本地库导入jar包
  19. ganglia组播和单播
  20. 《Python学习手册》(三)

热门文章

  1. 10-THREE.JS perspective透视摄像机和orthographic正交摄像机区别
  2. MAMP mac下启动Mysql
  3. PHP中获取文件扩展名的N种方法
  4. 网络编程基础--协程--greenlet切换---gevent自动识别 IO ---
  5. CodeForces - 900D: Unusual Sequences (容斥&amp;莫比乌斯&amp;组合数学)
  6. RabbitMQ 权限分离&amp;HA操作文档
  7. phoneGap入门教程
  8. jquery中validation部分学习笔记
  9. 利用TaskScheduler处理Queue、Stack等类型的操作队列(生产者消费者场景)
  10. mybatis association表关联与rowbounds共同使用时的异常及其解决方案