BOS12——多对多添加方法,多对多页面需要字段问题(不多的话直接提供get方法),修改Realm中授权方法(查询数据库),缓存Java对象的方法,加载左侧菜单(ztree提供pId)...

 1、多对多添加方法

@Override
public void add(Role model, String functionIds) {// 1.先将角色保存到数据库roleDao.save(model);// 2.为角色添加权限(一定要坚持映射文件中是否inverse)if (StringUtils.isNotBlank(functionIds)){String[] functionIdList = functionIds.split(",");for (String fid : functionIdList) {// 可以自己new一个Function对象,也可以用functionId获取Function对象Function function = new Function();function.setId(fid);model.getFunctions().add(function);}}}

2、多对多页面需要字段问题(不多的话直接提供get方法)

在多对多关系时,由于比较复杂,所以我们可以为页面指定的字段加上一个get方法

3、修改Realm中授权方法(查询数据库)

多对多连表查询

 1 //授权方法
 2 protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {
 3 
 4     SimpleAuthorizationInfo info = new SimpleAuthorizationInfo();
 5 
 6     // 获取用户对象
 7     TUser user = (TUser) SecurityUtils.getSubject().getPrincipal();
 8 //        TUser user2 = (TUser) principals.getPrimaryPrincipal();
 9 //        System.out.println(user1 == user2);
10 
11     List<Function> functionList = null;
12     if (user.getUsername().equals("admin")){
13         DetachedCriteria dc = DetachedCriteria.forClass(Function.class);
14         functionList = functionDao.findAll(dc);
15     }else{
16         functionList = functionDao.findByUserId(user.getId());
17     }
18 
19 
20     for (Function f: functionList) {
21         info.addStringPermission(f.getCode());
22     }
23     // 直接(不查数据库)为用户授权
24 //        info.addStringPermission("staff-list");
25 
26     return info;
27 }
BOSRealm
 1 @Override
 2 public List<Function> findByUserId(String id) {
 3 
 4     // distinct==》去重
 5     String hql = "select distinct f from Function f inner join f.roles r inner join r.users u where u.id=?";
 6 
 7     List<Function> list = (List<Function>) super.getHibernateTemplate().find(hql,id);
 8 
 9     return list;
10 }
FunctionDao

但这样有一个缺陷,每次访问一个页面都会重新进行数据库查询;所以要整一个缓存

4、ehcache是专门缓存插件,可以缓存Java对象,提高系统性能。

第一步:在pom.xml文件中引入ehcache的依赖

第二步:在项目中提供ehcache的配置文件

<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../config/ehcache.xsd"><diskStore path="java.io.tmpdir"/><defaultCachemaxElementsInMemory="10000"eternal="false"timeToIdleSeconds="120"timeToLiveSeconds="120"overflowToDisk="true"maxElementsOnDisk="10000000"diskPersistent="false"diskExpiryThreadIntervalSeconds="120"memoryStoreEvictionPolicy="LRU"/>
</ehcache>

第三步:在spring配置文件中配置缓存管理器对象,并注入给安全管理器对象

 

 1 <!--配置安全管理器-->
 2 <bean name="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
 3     <property name="realm" ref="bosRealm"/>
 4     <!--注入缓存管理器-->
 5     <property name="cacheManager" ref="cacheManager"/>
 6 </bean>
 7 
 8 <!--注册缓存管理器-->
 9 <bean name="cacheManager" class="org.apache.shiro.cache.ehcache.EhCacheManager">
10     <!--注入ehcache配置文件-->
11     <property name="cacheManagerConfigFile" value="classpath:ehcache.xml"/>
12 </bean>
View Code

5、加载左侧菜单

 

转载于:https://www.cnblogs.com/x54256/p/8612776.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/398463.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一幅长文细学JavaScript(七)——Ajax

文章目录7 Ajax7.1 概述7.1.1 基本概念7.1.2 网络通信开发者工具7.1.3 网页请求数据的方式7.1.4 资源的请求方式7.2 JQuery中的Ajax7.2.1 基本知识7.2.2 了解jQuery的Ajax7.2.3 $.get()7.2.4 $.post()7.2.5 $.ajax()7.3 接口7.3.1 接口概念7.3.2 接口测试工具7.4 form表单7.4.1…

创建PCH文件

build settings --> language --> prefix header 文件路径&#xff1a;$(SRCROOT)/ZhuiKe/PrefixHeader.pch解释&#xff1a;文件名/pch文件名转载于:https://www.cnblogs.com/xiangli/p/4288789.html

jquery获取select选择的文本与值

jquery获取select选择的文本与值 获取select &#xff1a; 获取select 选中的 text : $("#ddlregtype").find("option:selected").text(); 获取select选中的 value: $("#ddlregtype ").val(); 获取select选中的索引: $("#ddlregtype "…

Linux系统检查查看桌面环境

Linux的桌面系统系统多达十几种&#xff0c;像gnome、kde、mate、cinnamon、lxde、xfce、jwm等。比较常用的一般是gnome、kde、xfce等。那么如何判断Linux系统安装了哪种桌面环境组件呢&#xff1f;下面总结了一些检查桌面环境的方法&#xff1a; 方法1&#xff1a;env | grep…

uinavigation样式

1 UINavigationController* pNav [[UINavigationController alloc] initWithRootViewController:pView]; 2 [pNav.navigationBar setBarTintColor:NAVBAR_COLOR];//导航条背景颜色 3 [pNav.navigationBar setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:…

一幅长文细学JavaScript(二)——ECMAScript

2 基本程序设计结构 摘要 ​ 对于学习JS的程序员来说&#xff0c;一定是具备了一定的编程功底的&#xff0c;故在下面的概述中&#xff0c;我们不再提及一些简单的概念。 声明&#xff1a;在使用本文的代码时&#xff0c;为了避免文章冗长&#xff0c;我只附上了script标签内的…

HashMap源码剖析

无论是在平时的练习还是项目当中&#xff0c;HashMap用的是非常的广&#xff0c;真可谓无处不在。平时用的时候只知道HashMap是用来存储键值对的&#xff0c;却不知道它的底层是如何实现的。 一、HashMap概述 HashMap基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作…

Android成长日记-Android监听事件的方法

1. Button鼠标点击的监听事件 --setOnClickListener 2. CheckBox, ToggleButton , RadioGroup的改变事件 --setOnCheckedChangeListener Eg: 3. onPageChangeListener() ----用来监控ViewPager滑到第几页转载于:https://www.cnblogs.com/boy1025/p/4301956.html

XSS攻击(出现的原因、预防措施......)

验证XSS攻击重点不是去查找可输入哪些内容会出现什么样的bug就是测试XSS攻击&#xff0c;重点是了解它出现的原理&#xff0c;为什么会出现XSS攻击&#xff0c;导致一些问题出现&#xff1f;如何防御与解决XSS攻击&#xff1f;以下我将简单介绍以上提出的问题。 如何判定没有被…

一幅长文细学JavaScript(三)——DOM

文章目录3 JavaScript DOM3.1 DOM基本术语DOM模型及其作用文档对象模型节点节点的属性文档对象3.2 DOM文档操作3.2.1 查找网页元素3.2.2 获取元素内容新的策略——修改样式更好的策略——修改样式3.2.3 改变元素内容3.2.4 操作网页元素3.2.5 获取元素偏移offset和style的区别3.…

2016国内移动广告平台排行榜

为什么80%的码农都做不了架构师&#xff1f;>>> 移动营销的发展可追溯至第一台便携式手机的诞生&#xff0c;并随着移动终端的更新迭代和广告技术的发展创新&#xff1b;随着移动互联网的技术与商业模式的迅速发展&#xff0c;移动营销领域面临着种种创新与改革&am…

Planning Strategy 和Requirement type的思考

Planning Strategy 和 requirement type的联系 1. 当需要对一个material进行计划的时候 &#xff0c;我们会自然的考虑到plant的 production方式 ( MTO production or MTS production) ,如果能确定下来是MTO 还是MTS 的方式 &#xff0c; 那就可以确定了计划策略的选择 。 而计…

【摄影】田子坊

图片发自简书App图片发自简书App图片发自简书App图片发自简书App图片发自简书App图片发自简书App图片发自简书App图片发自简书App转载于:https://www.cnblogs.com/wangting888/p/9701627.html

一幅长文细学JavaScript(四)——BOM

文章目录4 JavaScript BOM4.1 BOM概述浏览器对象模型4.2 Window对象4.2.1 弹出框弹出框类型4.2.2 定时事件定时器概念操作定时器4.2.3 同步与异步单线程JS同步和异步开启多线程一个问题同步任务和异步任务JS执行机制4.3 Location对象4.3.1 基本概念Location对象URLURL格式组成4…

selenium RC 环境配置

在网上搜索了许久&#xff0c;没找到有具体的配置&#xff0c;只是简单了写了几个步骤&#xff0c;自己琢磨了一下&#xff0c;于是&#xff0c;就想整理一篇文章&#xff0c;便于以后温习。 本文是参照官网的步骤进行了&#xff0c;当然了&#xff0c;也不完成相同。在这里我要…

西安房产

http://xa.58.com/ershoufang/16421056735238x.shtml?PGTID14251184213960.09692851384170353&ClickID7 http://xa.58.com/ershoufang/20901882448136x.shtml?PGTID14251184213960.09692851384170353&ClickID13 转载于:https://www.cnblogs.com/learningJAVA/p/43060…

一幅长文细学GaussDB(二)——数据库基础知识

文章目录2 数据库基础知识2.1 数据库管理简介数据库管理数据库管理工作范围对象管理制定数据库对象命名规范备份和恢复灾难恢复备份方式数据库安装数据库卸载数据库迁移数据库扩容例行维护工作2.2 数据库重要概念数据库和数据库实例数据库连接和会话数据库连接池模式表空间表数…

hive如何处理not in和in的问题

2019独角兽企业重金招聘Python工程师标准>>> 首先我们先创建两个表和测试数据。建表语句如下&#xff1a; create table table1(uid STRING, dayTimes BIGINT) PARTITIONED BY (dt STRING); create table table2(uid STRING, monTimes BIGINT) PARTITIONED BY (dt S…

HDU 2072(单词数)题解

以防万一&#xff0c;题目原文和链接均附在文末。那么先是题目分析&#xff1a; 【一句话题意】 “就是统计一篇文章里不同单词的总数”&#xff08;已经是一句话了。。&#xff09; 【题目分析】 明显需要去重&#xff0c;上set&#xff0c;因为按行分析&#xff0c;又没有EOL…

摄影相关术语

摄影相关术语 gwj233 2018.2.14 对象(对焦)用光(光量,质,位,比,色)构图(平面,空间)。 0x01认识曝光 1、什么是摄影&#xff1a;以光线绘图&#xff0c;即通过物体反射的光线使感光介质曝光的过程。&#xff08;通过光来表现物体的形状体积结构质感颜色。&#xff09; 2、目标出…