shiro标签页点击报错: No SecurityManager accessible to the calling code...

2023-11-01

shiro按钮配置标签报错问题

问题:

最近的项目需要将按钮也动态配置进去。我按照网上的步骤加上shiro的taglib标签

<%@ taglib prefix="shiro" uri="http://shiro.apache.org/tags" %>

然后在该页面的某个按钮上加上

<shiro:hasPermission name="user_authorize"><button id="user_limits">用户授权</button></shiro:hasPermission>

并且后台的方法里边也有如下操作

@Override

protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {
 User user = (User)principals.getPrimaryPrincipal();
 SimpleAuthorizationInfo info = new SimpleAuthorizationInfo();
List<SysFunc> sysFuncList = sysFuncService.selectSysFuncByUserName(user.getUserName()); //获取所有按钮的功能记录
if(sysFuncList != null){
 Set<String> permissonSet = new HashSet<String>();
 for(SysFunc func:sysFuncList){
    if(!StringUtils.isEmpty(func.getFunc_Url())){
        permissonSet.add(func.getFunc_Url());
    };
 }    //如下,我也将当前用户有的按钮权限字符串放进去了。
    info.setStringPermissions(permissonSet);
 }
 return info;
}

但是我在这么配置好之后,一点击那个jsp页面就报

UnavailableSecurityManagerException: No SecurityManager accessible to the calling code, either bound to the org.apache.shiro.util.ThreadContext or as a vm static singleton.  This is an invalid application configuration.

从字面上来看,好像我没有配置securityManager的东西,但是!!!!,我登录是没有问题的。问题如下:

这里写图片描述

既然其他页面是可以的,那为什么一配置上这个标签就报错呢,网上有说过滤器的顺序原因,还有说是少配置了DispatcherType,但我并没有其他过滤器,也试过多配置几个dispatcherType,都不行。

问题最终原因:

  最后发现问题出在jsp页面上,上图我们的系统左边的树,那些用户管理、组织机构对应的页面,全部是直接点击访问的jsp页面,并没有经过controller那样返回给它,而我的shiro配置因为当初为了减少静态资源的过滤,而把所有带“.”的文件统统放开了,所以jsp页面在不登录也是可以访问的,这就导致在点击带shiro标签页面的时候,它在去调用权限验证方法的时候,就会报错,也就是上边的错误。

解决方法:

具体办法有两种:

1、一种是最容易想到的,就是将这些页面点击事件,从直接访问jsp页面变成访问接口,通过接口返回jsp页面。但是现在项目已经快结束,每个jsp页面都给写一个controller,我就疯了,当然在开始的话是可以这么搞的。
2、一种是最简单的,就是既然jsp不在shiro管理下,那想办法把它管理起来不就可以了嘛。
  首先找到你的shiroFilter配置的位置,我的是spring boot项目,spring boot项目是在shiroConfig类里,是下图这样:
这里写图片描述
  在shiroFilter配置有MShiroFilterFactoryBean类,进入到这个类里,你可能不叫这个名字,但肯定会有这么一个配置
进入到这个类中,添加如下变量
这里写图片描述

  同样在该类中的最下边:

这里写图片描述
  上图定义了一个开关,是用来,判断当前请求的带“.”的url中,是不是jsp,如果是jsp则走shiro的过滤,如果不是,则不走。
如上配置以后,再重启项目后,就不会有这个错误了。这个错误影响我好几天。唉,没想到是这个原因。。。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

shiro标签页点击报错: No SecurityManager accessible to the calling code... 的相关文章

  • spring boot配置shiro安全框架及用户登录权限验证实现

    关于shiro的配置我单独拿出来写了 从数据库表建立 到配置 如何使用 连接地址为shiro安全框架 shiro的应用理解 如果有修改会在这里边修改的 另外 springboot shiro的项目已分享到GitHub上 如果需要的可以看下
  • Shiro实战学习笔记(4)- 整合springboot(1)

    1 shiro整合spring boot gt
  • shiro标签页点击报错: No SecurityManager accessible to the calling code...

    shiro按钮配置标签报错问题 问题 最近的项目需要将按钮也动态配置进去 我按照网上的步骤加上shiro的taglib标签 然后在该页面的某个按钮上加上
  • shiro 动态修改资源权限不需要重启项目或者重新登录用户

    用shiro做权限控制的时候 变更用户或者角色的权限后刷新界面不会重新加载权限 需要重启tomcat或者用户重新登录 特别的不人性化 通过下面的方式可以解决这个问题 但仅仅针对于单机 对集群来说就不太清楚 以后有了更好的方法再去使用 菜鸟级
  • Shiro使用redis作为缓存(解决shiro频繁访问Redis)(十一)

    原文地址 转载请注明出处 https blog csdn net qq 34021712 article details 80791219 王赛超 之前写过一篇博客 使用的一个开源项目 实现了redis作为缓存 缓存用户的权限 和 sess
  • ShiroFilter设计原理与实现

    Shiro提供了与Web集成的支持 其通过一个ShiroFilter入口来拦截需要安全控制的URL 然后进行相应的控制 ShiroFilter类似于如Strut2 SpringMVC这种web框架的前端控制器 其是安全控制的入口点 其负责读
  • SpringBoot整合shiro-spring-boot-web-starter启动报错

    最近在做一个SpringBoot整合常用框架的系统 在整合Shiro时启动就报错 现将解决办法总结如下 SpringBoot使用的是最新的2 3 4版本 Shiro使用的是shiro spring boot web starter1 6 0
  • springboot2+shiro+redis限制同一账号同时在线人数

    springboot2 shiro redis限制同一账号同时在线人数 我们在写系统的时候 需要注意账号安全问题 最好的处理方法就是同一个账号只能在一个地方登录 原理 大概的原理就是每次登录的时候将登录的sessionId存入缓存 然后登录
  • SpringBoot+Shiro实现免密登录

    1 自定义登录认证规则 import org apache shiro authc UsernamePasswordToken public class EasyUsernameToken extends UsernamePasswordT
  • SpringMVC+Shiro整合配置文件详解

    在项目中xml文件的配置是必不可少的 特别是SpringMVC框架 但是几乎所有项目的配置都是大同小异 很多人都是直接复制黏贴了事 不少人对其具体含义及用途都不甚全知 本片文章将正对项目中常用的框架SpringMVC Shiro进行整合 并
  • Shiro之@RequiresPermissions注解原理详解

    前言 shiro为我们提供了几个权限注解 如下图 这几个注解原理都类似 这里我们讲解 RequiresPermissions的原理 铺垫 第一 首先要清楚 RequiresPermissions的基本用法 就是在Controller的方法里
  • Shiro简单配置Springboot版(1)

    1 权限的管理 1 1 什么是权限管理 基本上涉及到用户参与的系统都要进行权限管理 权限管理属于系统安全的范畴 权限管理实现对用户访问系统的控制 按照安全规则或者安全策略控制用户可以访问而且只能访问自己被授权的资源 权限管理包括用户身份认证
  • spring+shiro多节点session共享

    shiro我就不多介绍了 我的方案是重写 shiro的sessionDAO 把session存储到redis上 直接上代码 一 spring中配置
  • shiro多项目跳转用户身份失效问题排查

    shiro多项目跳转用户身份失效问题排查 1 身份失效问题 最近在项目中遇到过一个问题 统一登录系统中有各个子系统的模块 可点击子系统模块进行跳转 如下图所示 如上图 当用户点击子系统B新窗口打开时 实现跳转成功 当再回到原统一登录系统页面
  • Shiro权限框架-在线并发登录人数控制(9)

    1 实现原理 在实际开发中 我们可能会遇到这样的需求 一个账号只允许同时一个在线 当账号在其他地方登陆的时候 会踢出前面登陆的账号 那我们怎么实现 自定义过滤器 继承AccessControlFilter 使用redis队列控制账号在线数目
  • Jeesite开发平台限制用户多点登录

    Jeesite开发平台限制用户多点登录 授权查询回调函数 进行鉴权但缓存中无用户的授权信息时调用 Override protected AuthorizationInfo doGetAuthorizationInfo PrincipalCo
  • 用户登录的详细流程(二)JWT生成token登录

    JWT生成token登录 1 jwt的构成 1 header 2 payload 3 signature 2 token的登陆原理 3 在实际中如何应用token 1 设置token的生成代码 2 如何从token中获取有用的信息 3 验证
  • Shiro总结和常见面试题

    Shiro总结和常见面试题 一 什么是shiro Shiro是一个强大易用的java安全框架 提供了认证 授权 加密 会话管理 与web集成 缓存等功能 对于任何一个应用程序 都可以提供全面的安全服务 相比其他安全框架 shiro要简单的多
  • Shiro 向 DefaultSecurityManager 抱怨“没有 id xxx 的会话”

    我在一个长期运行的应用程序中使用 Apache Shiro 1 2 0 该应用程序从队列中读取消息并采取操作 所采取的操作需要 Shiro 进行身份验证的会话 因此我实现了一个 ActAsAuthenticationToken 和自定义凭据
  • 如何在生产中安全地更改会话 cookie 域或名称?

    我们最近意识到我们的会话 cookie 正在被写入我们网站的完全限定域名 www myapp com 例如 MYAPPCOOKIE 79D5DB83 domain www myapp com 我们希望将其切换为可以跨子域共享的cookie

随机推荐

  • nginx安装http_ssl_module模块,支持https

    1 进入源码包 如 cd usr local nginx 1 15 0 2 运行nginx V命令查看已经安装的nginx模块 configure arguments 后面表示当前已经安装的nginx模块 如 root izbp11gsqd
  • 高等数学(工本)选择题

    线性运算案例 向量运算案例 求曲面方程 求平面方程 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 3
  • 最新Python入门基础教程2023

    目录 前言 安装Python 变量和数据类型 运算符 控制流语句 函数 列表 字典 循环 for循环 while循环 条件语句 if语句 if else语句 异常处理 其他基础知识 前言 学习Python的基础知识对于
  • 2022经历裁员之后,我总结了程序员必备的架构能力!

    一 前情回顾 上篇文章 同事老是吐槽我的接口性能差 原来真凶就在这里 聊了一下系统架构中的查询平台 我们采用冷热数据分离 冷数据基于HBase Elasticsearch 纯内存自研的查询引擎 解决了海量历史数据的高性能毫秒级的查询 热数据
  • 华为交换机CE12808导入导出配置文件

    1 创建FTP用户 开启ftp服务 ftp server enable 设置ftp默认文件目录 set default ftp directory flash 进入AAA视图 aaa 设置用户 密码 local user 用户名 passw
  • 代价函数

    一 什么是代价函数 我在网上找了很长时间代价函数的定义 但是准确定义并没有 我理解的代价函数就是用于找到最优解的目的函数 这也是代价函数的作用 二 代价函数作用原理 对于回归问题 我们需要求出代价函数来求解最优解 常用的是平方误差代价函数
  • 普通大专真的可以自学 Java 吗?

    能是肯定能 看数据先 全国范围内搜索Java筛选大专学历 1到 3年工作经验 找到了1177条消息 但是其他条件不变 更改本科呢 全国范围内搜索到了3215条招聘消息 有人说什么90 以上都要本科 确实有点片面了 当然现在也不是招聘旺季 已
  • HashMap的底层实现。(05)

    HASHMAP的简介 通过学习本文档后能够掌握到的知识点 1HashMap的简单介绍 2HashMap的主要方法 3模仿JAVA写一个简单的HASHMAP 子曰 学而不思则罔 思而不学则殆 1 为什么学HASHMAP 作为MAP接口下面一个
  • springboot学习(七)Thymeleaf模板引擎

    模板引擎 springboot我们目前是以jar包的形式打包 实际上我们之前是打成war包 放到tomcat服务器里面 可以用JSP 但是jar包就导致不能用JSP 换一种方式就是springboot推荐的Thymeleaf模板引擎 JSP
  • npm 换淘宝源

    npm config get registry npm config set registry https registry npm taobao org
  • cURL安装和常用实例

    cURL是一个利用URL语法在命令行下工作的文件传输工具 配置后 可以在命令行直接执行各类操作 也可以作为源码包 载入到各类后端开发 为后端提供文件传输能力 安装 下载 演示电脑是win10 64位 下载对应的包 全部下载地址 zip地址
  • Hibernate中枚举Enum类型的映射策略

    在Java中Enum是一种 奇葩 的存在 奇葩 不代表没用 对于这种比较特殊的存在 hibernate会有很多种选择来完成Enum类型字段的映射 首先要说明的是在hibernate都是把Enum类型的字段映射成基本类型的字段 并且我这里不使
  • moviepy音视频开发:音频剪辑基类AudioClip详解

    前往老猿Python博文目录 一 背景知识介绍 1 1 声音三要素 音调 人耳对声音高低的感觉称为音调 也叫音频 音调主要与声波的频率有关 声波的频率高 则音调也高 音量 也就是响度 人耳对声音强弱的主观感觉称为响度 响度和声波振动的幅度有
  • AIGC发展路径思考:大模型工具化普及迎来新机遇

    来源 腾讯科技 摘要 当前 AIGC引发社会关注 尤其是大模型和开源模式的推动 让AIGC有望成为AI应用落地的新领域 一方面大模型和开源加速降低AIGC应用门槛并拓展应用范围 另一方面AI与创新的界限进一步模糊 两者融合的趋势愈发明显 本
  • Python 多线程 run() 与 start()的关系

    先说结论 1 调用多线程时用start 2 start 中会调用run 3 run 不会启动多线程 代码分析 1 首先看run 的代码 def run self Method representing the thread s activi
  • 二阶系统参数用matlab,实验一基于MATLAB的二阶系统动态性能分析

    实验一 基于MATLAB 的二阶系统动态性能分析 一 实验目的 1 观察学习二阶控制系统的单位阶跃响应 脉冲响应 2 记录单位阶跃响应曲线 脉冲响应曲线 3 掌握时间响应分析的一般方法 4 掌握系统阶跃响应曲线与传递函数参数的对应关系 二
  • sqoop入门

    大数据技术之Sqoop 一 Sqoop简介 Sqoop是hdfs hive hbase和RDBMS结构化数据库之间传输大量数据的工具 二 Sqoop原理 将导入或导出命令翻译成mapreduce程序来实现 在翻译出的mapreduce中主要
  • Linux常用命令介绍(一)——文件与文件夹操作相关命令

    今天继续给大家介绍Linux相关操作 本文主要内容是文件和文件夹的基本操作 包括创建 复制 删除 以及压缩和解压缩命令 一 创建文件 夹 mkdir命令用于创建文件夹 在使用时 我们常常跟 p参数 表示强制创建 没有该参数 则必须目标文件夹
  • ESP32中定时计数器的使用

    一 GPIO常用函数 esp err t gpio reset pin gpio num tgpio num 将 gpio 重置为默认状态 选择 gpio 功能 启用上拉并禁用输入和输出 备注此功能还将此引脚的 IOMUX 配置为 GPIO
  • shiro标签页点击报错: No SecurityManager accessible to the calling code...

    shiro按钮配置标签报错问题 问题 最近的项目需要将按钮也动态配置进去 我按照网上的步骤加上shiro的taglib标签 然后在该页面的某个按钮上加上