JS中处理Shiro的权限标签问题

JS中引用Shiro的标签不起作用的问题解决方法:

1.第一种情况假如js中生成标签代码是固定死的解决起来比较容易,直接在需要权限判断标签前和后加上权限控制标签,即可以起作用

<divid="leftnav"class="site-text"lay-filter=“left”>

<scripttype=“text/javascript”>

var ulHtml;

ulHtml += ‘<shiro:hasRole name=“999999”>’

ulHtml += ‘’ + data[i].children[j].icon +’’;

ulHtml +=’</shiro:hasRole>’
$(’#leftnav’).html(ulHtml);

,但是假如Shiro标签name参数使动态传进去的则Shiro标签作用失效了,会导致是Shiro标签中所的html标签不管有没有权限都不显示,事例:

这种情况我的解决方案是,在后台查询到用户的权限数据时直接放到Session中,js中不通过Shiro标签判断而是自己通过获取权限的url动态判断

/**

  • Shiro身份认证+授权 重写

*/

public class SampleRealm extends AuthorizingRealm{

/**

  • 授权处理

*/

@Override

protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollectionprincipals) {

Long userId = TokenManager.getUserId();

SimpleAuthorizationInfoinfo =new SimpleAuthorizationInfo();

//根据用户ID查询角色和权限,放入到Authorization里。

Set roles = roleService.findRoleByUserId(userId);

info.setRoles(roles);

//根据用户ID查询权限(permission),放入到Authorization里

Set permissions = permissionService.findPermissionByUserId(userId);

info.setStringPermissions(permissions);

//权限数据时直接放到Session中

TokenManager.setVal2Session(“permissions”, permissions);

returninfo;

}

JS中可以通过Session中获取权限数据

var pers = ‘<%=session.getAttribute(“permissions”)%>’;

//将权限数据数组进行分割转为字符串数组,然后循环判断是否你访问的url元素在授权中,若在授权中动态生成html标签则显示,否则则隐藏掉

var resultpers =pers.replace(’[’,’’).replace(’]’,’’).split(’,’);

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【资源说明】 1、基于SpringBoot+Layui+shiro安全框架和Ehcache缓存框架搭建的学生管理系统源码+项目说明.zip 2、该资源包括项目的全部源码,下载可以直接使用! 3、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,作为参考资料学习借鉴。 4、本资源作为“参考资料”如果需要实现其他功能,需要能看懂代码,并且热爱钻研,自行调试。 基于SpringBoot+Layui+shiro安全框架和Ehcache缓存框架搭建的学生管理系统源码+项目说明.zip # StudentManagementSystem SpringBoot+Layui搭建的学生管理系统,加入了shiro安全框架和Ehcache缓存框架 最近新学习了前端框架Layui、安全框架Shiro、缓存框架Ehcache的基本用法,边学习边练习,写了这个学生管理系统。 ### 介绍 该系统相对于以前的练手项目,最主要就是新增了shiro权限。我在菜单栏用了shiro标签对菜单进行控制,根据登录用户的不同,显示不同的菜单和操作按钮。 新接触的Layui的表单可以说是非常实用了,但是我用ehcache缓存对list集合进行缓存时,layui的表格分页功能就会失效(比如我查询学生列表,并且对这个list添加了缓存,那么在前端展示时,layui的分页功能就会失效,转而显示所有的学生),目前还没有找到解决办法,所以在项目就没有对list查询进行缓存。 基本的环境: * Spring+SpringMVC+Mybatis * 前端:Layui+Thymeleaf模板 * 安全框架:shiro * 缓存:抽象缓存Ehcache * 简单的Restful风格开发 * pagehelper分页助手 * 加入了Druid数据监控 ### 数据库文件 数据库的文件放在了display目录下,可作为学习参考使用 ### 模块说明(大体框架是这样,不做细分) src|—— |——main |—— ├── java/com/braisedpanda |—— |——bean --:javabean |——config --:自定义的各种配置类 |——controller --:controller层 |——mapper --:mapper借口层 |——service --:service层 |——serviceimpl --:service实现层,可以和service放在一起 |——xxxxApplication --:项目的启动类 ├── resource |—— |——mybatis --:放置mybatis文件 |——static --:放置静态资源(图片、js、css之类的) |——templates --:themeleaf模板 |——application --:spring配置文件 ### 预览 #### `学生列表`<br><br> ![]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值