erp14-shiro-redis-svn

Posted 六叔的博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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. }

























































































以上是关于erp14-shiro-redis-svn的主要内容,如果未能解决你的问题,请参考以下文章

低代码平台在ERP软件开发中的作用

低代码平台在ERP软件开发中的作用

低代码平台在ERP软件开发中的作用

低代码平台在ERP软件开发中的作用

ERP已死,“中台”已凉,“低代码”称王!

程序人生 - ERP已死,“中台”已凉,“低代码”称王!