Spring+shiro,让shiro管理所有权限,特别是实现jsp页面中的权限点标签,每次打开页面需要读取数据库看权限,这样的方式对数据库压力太大,使用缓存就能极大减少数据库访问量。

下面记录下shiro配置JSP权限标签+角色标签+缓存的过程:

1首先在配置文件xml中配置securityManager。

<bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
<!--认证管理器-->
<property name="realm" ref="permissionsRealm" />
<!-- 缓存管理器 -->
<property name="cacheManager" ref="shiroCacheManager" />
</bean>
<!--认证管理器实现类-->
<bean id="permissionsRealm" class="com.soft.security.Realm.PermissionsRealm" />
<!--缓存管理器实现类,这里用的是系统自带的-->
<bean id="shiroCacheManager" class="org.apache.shiro.cache.MemoryConstrainedCacheManager" />

2然后,在PermissionsRealm类中,重写doGetAuthorizationInfo方法,在方法中需要做两件事:(1)设置角色(2)设置权限点。代码如下:

SimpleAuthorizationInfo info = new SimpleAuthorizationInfo();
info.addRole("角色名");
info.addStringPermission("权限点名");

3.此时,在JSP页面中就可以调用标签验证权限与角色了。

  在页面顶部引用<%@taglib prefix="shiro" uri="http://shiro.apache.org/tags" %> 标签库,

  然后在想触发权限点的地方写入:

<shiro:hasPermission name="1111">
用户拥有权限
</shiro:hasPermission>

如果用户有1111权限,则会显示“用户拥有权限”,同样,如果测试用户是否拥有某个角色,可以用以下标签:

<shiro:hasRole name="管理员">
用户拥有角色
</shiro:hasRole>

4.由于在1中,配置文件里面已经配置了缓存管理器,因此每次页面打开,后台只会读取一次用户角色+权限,后续都会用缓存,重新登陆后缓存自动清空。

Spring+shiro配置JSP权限标签+角色标签+缓存的更多相关文章

  1. Spring Shiro配置第三方SSO客户端登录

    经过实践的Shiro配置,利用 sSOInterceptor 进行sso登录拦截 配置 @Configuration public class ShiroConfiguration extends B ...

  2. spring+shiro+springmvc+maven权限卡控示例

    项目结构 UserController , 主要负责用户登入和注销. LinewellController, 主要负责请求受权限卡控的数据. MyRealm,自定义realm. Authorizati ...

  3. shiro中JSP标签

    Shiro提供了JSTL标签用于在JSP/GSP页面进行权限控制,如根据登录用户显示相应的页面按钮. 导入标签库 <%@taglib prefix="shiro" uri=& ...

  4. JavaEE自定义标签:标签类的创建、tld配置文件的创建(位置、如何创建)、Web-XML配置、JSP应用

    1.标签 以类似于html标签的方式实现的java代码的封装. 第一:形成了开发标签的技术标准---自定义标签的技术标准. 第二:java标准标签库(sun之前自己开发的一系列的标签的集合)jstl, ...

  5. Spring 配置标签——util标签

    Spring 配置标签——util标签     一.配置applicationContext.xml <beans xmlns="http://www.springframework. ...

  6. spring boot中jsp解析c标签方法

    pro.xml中添加jstl标签 <dependency><groupId>javax.servlet</groupId><artifactId>jst ...

  7. spring下配置shiro

    1.web.xml中加入shiro的过滤器: <!-- Spring --> <!-- 配置Spring配置文件路径 --> <context-param> < ...

  8. 项目一:第十三天 1、菜单数据管理 2、权限数据管理 3、角色数据管理 4、用户数据管理 5、在realm中动态查询用户权限,角色 6、Shiro中整合ehcache缓存权限数据

    1 课程计划 菜单数据管理 权限数据管理 角色数据管理 用户数据管理 在realm中动态查询用户权限,角色 Shiro中整合ehcache缓存权限数据         2 菜单数据添加 2.1 使用c ...

  9. 基于spring的shiro配置

    shiro是一个特别简单,易用的框架,在此记录一下shiro的使用配置. 首先,创建四张表:user  role  user_role  permission,分别为用户.角色.用户与角色关系表和权限 ...

随机推荐

  1. RK3288 双屏异显,两屏默认方向不一致

    CPU:RK3288 系统:Android 5.1 RK3288 支持双屏异显,一般都会同方向显示,如果遇到两个 lcd 的默认方向不一致,只需修改下面参数即可. 例如:主屏为mipi接口,分辨率为 ...

  2. SQL Server中动态列转行

    http://www.cnblogs.com/gaizai/p/3753296.html 一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 实现 ...

  3. MHA配置文件说明

    root@192.168.0.20 ~]# cat /etc/masterha/app1.cnf [server default] manager_workdir=/var/log/masterha/ ...

  4. LCD的接口类型详解

    LCD的接口有多种,分类很细.主要看LCD的驱动方式和控制方式,目前手机上的彩色LCD的连接方式一般有这么几种:MCU模式,RGB模式,SPI模式,VSYNC模式,MDDI模式,DSI模式.MCU模式 ...

  5. C# 基础备忘录

    1. decimal 类型调用ToString()方法后没把末尾的0去掉的解决办法: 例子:decimal? money = Convert.ToDecimal(10.8950); string mo ...

  6. ddt数据驱动

    数据驱动原理 1.测试数据为多个字典的list类型 2.测试类前加修饰@ddt.ddt 3.case前加修饰@ddt.data() 4.运行后用例会自动加载成三个单独的用例 5.测试结果: Testi ...

  7. OPENVPN2.3配置文档官方说明

    openvpn Section: Maintenance Commands (8)Index NAME openvpn - secure IP tunnel daemon. SYNOPSIS open ...

  8. bat文件

    bat文件是dos下的批处理文件.批处理文件是无格式的文本文件,它包含一条或多条命令.它的文件扩展名为 .bat 或 .cmd.在命令提示下键入批处理文件的名称,或者双击该批处理文件,系统就会调用cm ...

  9. 关于常见的协议BSD,APACHE,MIT,GPL的理解

    其实BSD和APACHE和MIT协议类似,基本就是可以为所欲为,但是要尊重原来的作者. GPL协议是一个免费和开源的协议,只要用了GPL协议的类库源码等,也必须适应GPL协议. 意思就是把开源和免费进 ...

  10. 关于微信小程序的一些看法和理解

    最近做了几个小时的调研,微信小程序 微信小程序是可以理解成在微信中的APP,他的目标是APP的替代者,由于目前的APP主要区分安卓和IOS,或者其他平台, 那么微信小程序的平台在微信,在任何一个手机系 ...