erp14-shiro-redis-svn

一、JSON.parseArray(string,Menu.class);

二、shiro运行顺序:

当有访问请求过来时,请求会通过

myPermsFilter过滤器中的subject.isPermitted(perms[i] )   ——>

ErpRealm中的授权方法给当前用户授权——>

回到myPermsFilter过滤器中的subject.isPermitted(perms[i] ),判断请求是否合法

三、细颗粒度-方法级别

shiro启动注解

  1. <!-- 启动shiro注解 -->
  2. <bean
  3. class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator"
  4. depends-on="lifecycleBeanPostProcessor" >
  5. <!-- 默认使用JDK代理 ,如被代理类没有实现接口,必须使用下列配置开启 cglib代理 -->
  6. <property name="proxyTargetClass" value="true" />
  7. </bean>
  8. <bean
  9. class="org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor">
  10. <property name="securityManager" ref="securityManager" />
  11. </bean>
  12. <!-- 对安全管理器 增强代码 , spring 后处理器 -->
  13. <bean id="lifecycleBeanPostProcessor" class="org.apache.shiro.spring.LifecycleBeanPostProcessor"/>

在需要授权验证的方法上加注解:

@RequiresPermissions("采购确认")

四、细颗粒度-代码级别

  1. @Override
  2. public void listByPage() {
  3. String type = getT1().getType();//1供应商 2客户
  4. Subject subject = SecurityUtils.getSubject();
  5. if (type.equals("2")) {
  6. if (!subject.isPermitted("客户")) {
  7. write("");
  8. return;
  9. }
  10. }
  11. if (type.equals("1")) {
  12. if (!subject.isPermitted("供应商")) {
  13. write("");
  14. return;
  15. }
  16. }
  17. if (!type.equals("1")&&!type.equals("2")) {
  18. write("");
  19. return;
  20. }
  21. super.listByPage();
  22. }

五、redis的demo代码

  1. package redisDemo;
  2. import redis.clients.jedis.Jedis;
  3. public class Test {
  4. public static void main(String[] args) {
  5. Jedis jedis = new Jedis("127.0.0.1");
  6. jedis.set("xingming", "zhangsan2");
  7. String string = jedis.get("xingming");
  8. System.out.println(string);
  9. jedis.del("xingming");
  10. String string1 = jedis.get("xingming");
  11. System.out.println(string1);
  12. }
  13. }
  1. package com.itheima.utils;
  2. import redis.clients.jedis.Jedis;
  3. import redis.clients.jedis.JedisPool;
  4. import redis.clients.jedis.JedisPoolConfig;
  5. public class JedisUtils {
  6. //创建连接池
  7. private static JedisPoolConfig config;
  8. private static JedisPool pool;
  9. static{
  10. config=new JedisPoolConfig();
  11. config.setMaxTotal(30);// 设置连接的最大连接数
  12. config.setMaxIdle(2);// 设置空闲时期连接的最大数,空闲着呢
  13. pool=new JedisPool(config, "127.0.0.1", 6379);
  14. }
  15. //获取连接的方法
  16. public static Jedis getJedis(){
  17. return pool.getResource();
  18. }
  19. //释放连接
  20. public static void closeJedis(Jedis j){
  21. j.close();
  22. }
  23. }

六、redis整合项目

  1. public List<Menu> getMenuListByEmpuuid(Long empuuid ){
  2. String string = jedis.get("menuList"+empuuid);
  3. if (string!=null) {
  4. System.out.println("================================数据从redis中来=================================");
  5. return JSON.parseArray(string,Menu.class);
  6. }else {
  7. System.out.println("============================数据从oracle来=========================");
  8. List<Menu> list = menuDao.getMenuListByEmpuuid(empuuid);
  9. jedis.set("menuList"+empuuid,JSON.toJSONString(list) );
  10. return list;
  11. }
  12. }
  1. @Override
  2. public void updateRoleMenu(Long id, String nodesStr) {
  3. Role role = roleDao.get(id);
  4. String[] splits = nodesStr.split(",");
  5. role.setMenus(new ArrayList<Menu>());
  6. for (String menuid : splits) {
  7. Menu menu = menuDao.get(menuid);
  8. role.getMenus().add(menu);
  9. }
  10. List<Emp> list = role.getEmps();
  11. for (Emp emp : list) {
  12. jedis.del("menuList"+emp.getUuid());
  13. }
  14. }

null

时间: 2024-12-15 15:21:23

erp14-shiro-redis-svn的相关文章

springboot+shiro+redis(单机redis版)整合教程-续(添加动态角色权限控制)

相关教程: 1. springboot+shiro整合教程 2. springboot+shiro+redis(单机redis版)整合教程 3. springboot+shiro+redis(集群redis版)整合教程 参考此教程前请先阅读 2.springboot+shiro+redis(单机redis版)整合教程,此教程是在其基础上进行修改添加动态角色权限的. 本教程整合环境: java8 maven redis(单机) 开发工具: idea 版本: springboot 1.5.15.RE

Shiro+Redis实现tomcat集群session共享

1. spring+shiro https://www.cnblogs.com/hafiz/p/7228294.html 2.springboot+shiro+redis项目整合 原文地址:https://www.cnblogs.com/newlangwen/p/10255744.html

分布式架构真正适用于大型互联网项目的架构! dubbo+zookeeper+springmvc+mybatis+shiro+redis

 分类: 分布式技术(3)  目录(?)[+] 平台简介 Jeesz是一个分布式的框架,提供项目模块化.服务化.热插拔的思想,高度封装安全性的Java EE快速开发平台. Jeesz本身集成Dubbo服务管控.Zookeeper注册中心.Redis分布式缓存技术.FastDFS分布式文件系统.ActiveMQ异步消息中间件.Nginx负载均衡等分布式技术 使用Maven做项目管理,项目模块化,提高项目的易开发性.扩展性 以spring Framework为核心容器,spring MVC为模型视图

精华【分布式微服务云架构dubbo+zookeeper+springmvc+mybatis+shiro+redis】分布式大型互联网企业架构!

摘要: 开发工具 1.Eclipse IDE:采用Maven项目管理,模块化. 2.代码生成:通过界面方式简单配置,自动生成相应代码,目前包括三种生成方式(增删改查):单表.一对多.树结构.生成后的代码如果不需要注意美观程度,生成后即可用. 技术选型(只列了一部分技术) 1.后端 服务框架:Dubbo.zookeeper.Rest服务 缓存:Redis.ehcache 消息中间件:ActiveMQ 负载均衡:Nginx 分布式文件:FastDFS 框架简介--主要定位于互联网企业架构,已内置企业

{精华}分布式、微服务、云架构dubbo+zookeeper+springmvc+mybatis+shiro+redis分布式大型互联网企业架构

摘要: Jeesz主要定位于互联网企业架构,已内置企业信息化系统的基础功能和高效的代码生成工具,包括:系统权限组件.数据权限组件.数据字典组件.核心工具 组件.视图操作组件.工作流组件.代码生成等.采用分层设计.双重验证.提交数据安全编码.密码加密.访问验证.数据权限验证. 平台简介 Jeesz是一个分布式的框架,提供项目模块化.服务化.热插拔的思想,高度封装安全性的Java EE快速开发平台. Jeesz本身集成Dubbo服务管控.Zookeeper注册中心.Redis分布式缓存技术.Fast

精华分布式、微服务、云架构dubbo+zookeeper+springmvc+mybatis+shiro+redis分布式大型互联网企业架构

平台简介 Jeesz是一个分布式的框架,提供项目模块化.服务化.热插拔的思想,高度封装安全性的Java EE快速开发平台. Jeesz本身集成Dubbo服务管控.Zookeeper注册中心.Redis分布式缓存技术.FastDFS分布式文件系统.ActiveMQ异步消息中间件.Nginx负载均衡等分布式技术 使用Maven做项目管理,项目模块化,提高项目的易开发性.扩展性 以Spring Framework为核心容器,Spring MVC为模型视图控制器,MyBatis为数据访问层, Apach

{精华}分布式微服务云架构dubbo+zookeeper+springmvc+mybatis+shiro+redis分布式大型互联网企业架构

摘要: Jeesz主要定位于互联网企业架构,已内置企业信息化系统的基础功能和高效的代码生成工具,包括:系统权限组件.数据权限组件.数据字典组件.核心工具 组件.视图操作组件.工作流组件.代码生成等.采用分层设计.双重验证.提交数据安全编码.密码加密.访问验证.数据权限验证. 平台简介 Jeesz是一个分布式的框架,提供项目模块化.服务化.热插拔的思想,高度封装安全性的Java EE快速开发平台. Jeesz本身集成Dubbo服务管控.Zookeeper注册中心.Redis分布式缓存技术.Fast

精华【分布式、微服务、云架构、dubbo+zookeeper+springmvc+mybatis+shiro+redis】分布式大型互联网企业架构!

平台简介 Jeesz是一个分布式的框架,提供项目模块化.服务化.热插拔的思想,高度封装安全性的Java EE快速开发平台. Jeesz本身集成Dubbo服务管控.Zookeeper注册中心.Redis分布式缓存技术.FastDFS分布式文件系统.ActiveMQ异步消息中间件.Nginx负载均衡等分布式技术 使用Maven做项目管理,项目模块化,提高项目的易开发性.扩展性 以Spring Framework为核心容器,Spring MVC为模型视图控制器,MyBatis为数据访问层, Apach

精华分布式微服务云架构dubbo+zookeeper+springmvc+mybatis+shiro+redis分布式大型互联网企业架构

平台简介 Jeesz是一个分布式的框架,提供项目模块化.服务化.热插拔的思想,高度封装安全性的Java EE快速开发平台. Jeesz本身集成Dubbo服务管控.Zookeeper注册中心.Redis分布式缓存技术.FastDFS分布式文件系统.ActiveMQ异步消息中间件.Nginx负载均衡等分布式技术 使用Maven做项目管理,项目模块化,提高项目的易开发性.扩展性 以Spring Framework为核心容器,Spring MVC为模型视图控制器,MyBatis为数据访问层, Apach

【分布式、微服务、云架构、dubbo+zookeeper+springmvc+mybatis+shiro+redis】分布式大型互联网企业架构!

框架简介--主要定位于互联网企业架构,已内置企业信息化系统的基础功能和高效的代码生成工具,包括:系统权限组件.数据权限组件.数据字典组件.核心工具 组件.视图操作组件.工作流组件组件.代码生成等.采用分层设计.双重验证.提交数据安全编码.密码加密.访问验证.数据权限验证.平台简介 是一个分布式的框架,提供项目模块化.服务化.热插拔的思想,高度封装安全性的Java EE快速开发平台. 本身集成Dubbo服务管控.Zookeeper注册中心.Redis分布式缓存技术.FastDFS分布式文件系统.A