思路:分别在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

业务逻辑:shiro框架的功能实现的更多相关文章

  1. 一步一步实现web程序信息管理系统之三----登陆业务逻辑实现(验证码功能+参数获取)

    本篇紧接着上一篇文章[一步一步实现web程序信息管理系统之二----后台框架实现跳转登陆页面] 验证码功能 一般验证码功能实现方式为,前端界面访问一个url请求,后端服务代码生成一个图片流返回至浏览器 ...

  2. ASP.NET MVC5 网站开发实践(一) - 框架(续) 模型、数据存储、业务逻辑

    上次搭建好了项目框架,但还是觉得不太对劲,后来才想起来没有对开发目标进行定位,这个小demo虽然不用做需求分析,但是要实现什么效果还得明确.后来想了一下就做个最简单的网站,目标定为小公司进行展示用的网 ...

  3. ASP.NET MVC+EF框架+EasyUI实现权限管理系列(4)-业务逻辑层的封装

    原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(4)-业务逻辑层的封装 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇)   (1):框架搭建    (2) ...

  4. MVC5 网站开发之四 业务逻辑层的架构和基本功能

    业务逻辑层在Ninesky.Core中实现,主要功能封装一些方法通过调用数据存储层,向界面层提供服务.   目录 奔跑吧,代码小哥! MVC5网站开发之一 总体概述 MVC5 网站开发之二 创建项目 ...

  5. 分享一个UI与业务逻辑分层的框架(三)

    序言 前两篇讲解了UIMediator框架的使用及具体原理代码.本篇讲述MediatorManager的实现代码及展望. MediatorManager MediatorManager的作用有两点: ...

  6. 分享一个UI与业务逻辑分层的框架(二)

    序言 第一篇讲解了UI与业务逻辑分层的框架(UIMediator)的使用.本篇将说明该框架的原理及代码实现. 整体结构 UI与后台类绑定主要分为UI输入->后台属性,后台属性-UI更新两部分,为 ...

  7. 分享一个UI与业务逻辑分层的框架(一)

    序言 .NET(C#)的WinForm如何简单易行地进行UI与业务逻辑分层?本系列文章介绍一个WinForm分层框架,该框架针对WinForm中的TextBox,CheckBox,RadioButto ...

  8. 从零开始,搭建博客系统MVC5+EF6搭建框架(1),EF Code frist、实现泛型数据仓储以及业务逻辑

    前言      从上篇30岁找份程序员的工作(伪程序员的独白),文章开始,我说过我要用我自学的技术,来搭建一个博客系统,也希望大家给点意见,另外我很感谢博客园的各位朋友们,对我那篇算是自我阶段总结文章 ...

  9. Flask--(项目准备)--框架搭建,配置文件抽取,业务逻辑抽取

    抽取配置文件: import logging from redis import StrictRedis class Config(object): """项目的配置&q ...

随机推荐

  1. oralce 索引(1)

    本文来自网上整理 来自以下博客内容 http://www.360doc.com/content/13/0712/11/13136648_299364992.shtml; http://www.cnbl ...

  2. ImageSwitcher的简单使用

    测试代码: activity_main.xml: <?xml version="1.0" encoding="utf-8"?> <Linear ...

  3. Boost 读写锁

    //#########测试多线程,读写锁,递归锁 #include <boost/thread.hpp> #include <boost/thread/recursive_mutex ...

  4. CF 739E Gosha is Hunting

    有 $n$ 个 Pokemon,你有 $A$ 个一类精灵球,$B$ 个二类精灵球 分别给出每个 Pokemon 被这两类精灵球捕捉的概率 求抓到 Pokemon 的最优期望个数 $n\leq 2000 ...

  5. linux大于2T的磁盘格式化

    fdisk默认只能格式小于2T的磁盘,我们经常会碰到大于2T的磁盘,我们不能fdisk 格式化. 我们得用parted 来的格式化 parted 命令可能没有,yum install -y parte ...

  6. hdu5542 The Battle of Chibi[DP+BIT]

    求给定序列中长度为M的上升子序列个数.$N,M<=1000$. 很容易想到方法.$f[i,j]$表示以第$i$个数结尾,长度为$j$的满足要求子序列个数.于是转移也就写出来了$f[i][j]+= ...

  7. java 实现树形结构

    package tree; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Font; import java ...

  8. Python 算法之二分查找

    二分查找 二分查找又称折半查找 优点是比较次数少,查找速度快,平均性能好 缺点是要求待查表为有序表,且插入删除困难 折半查找方法适用于不经常变动而查找频繁的有序列表. 猜数字游戏 1.生成一个有序列表 ...

  9. 接口方式[推荐]/动态SQL语句

    MVC目录结构: Src -- com.shxt.servlet[控制层] --com.shxt.service[业务逻辑层] --com.shxt.model[实体Bean,用来承载数据] --co ...

  10. VerilogHDL编译预处理

    编译预处理语句 编译预处理是VerilogHDL编译系统的一个组成部分,指编译系统会对一些特殊命令进行预处理,然后将预处理结果和源程序一起在进行通常的编译处理.以”`” (反引号)开始的某些标识符是编 ...