shiro与SSM项目整合

Shiro与SSM整合(内含详细文档介绍) Shiro与SSM整合(内含详细文档介绍)Shiro与SSM整合(内含详细文档介绍)Shiro与SSM整合(内含详细文档介绍) 立即下载

shiro于SSM整合所有的jar包

web.xml中配置shiro的filter

在web系统中,shiro也通过filter进行拦截。filter拦截后将操作权交给spring中配置的filterChain(过虑链儿)
shiro提供很多filter。

这里写图片描述

applicationContext-shiro.xml

在applicationContext-shiro.xml 中配置web.xml中fitler对应spring容器中的bean。

这里写图片描述

静态资源

对静态资源设置逆名访问:
修改applicationContext-shiro.xml

这里写图片描述

登陆

原理

使用FormAuthenticationFilter过虑器实现 ,原理如下:

将用户没有认证时,请求loginurl进行认证,用户身份和用户密码提交数据到loginurl
FormAuthenticationFilter拦截住取出request中的username和password(两个参数名称是可以配置的)
FormAuthenticationFilter调用realm传入一个token(username和password)
realm认证时根据username查询用户信息(在Activeuser中存储,包括 userid、usercode、username、menus)。
如果查询不到,realm返回null,FormAuthenticationFilter向request域中填充一个参数(记录了异常信息)

在登录页面中,由于FormAuthenticationFilter的用户身份和密码的input的默认值(username和password),修改页面的账号和密码 的input的名称为username和password

这里写图片描述

认证拦截过虑器

在applicationContext-shiro.xml中配置

这里写图片描述

退出

使用LogoutFilter

不用我们去实现退出,只要去访问一个退出的url(该 url是可以不存在),由LogoutFilter拦截住,清除session。

在applicationContext-shiro.xml配置LogoutFilter

这里写图片描述

授权过虑器测试

使用PermissionsAuthorizationFilter

在applicationContext-shiro.xml中配置url所对应的权限。

测试流程:
1、在applicationContext-shiro.xml中配置filter规则

<!--商品查询需要商品查询权限  -->
    /items/queryItems.action = perms[item:query]

2、用户在认证通过后,请求/items/queryItems.action
3、被PermissionsAuthorizationFilter拦截,发现需要“item:query”权限
4、PermissionsAuthorizationFilter调用realm中的doGetAuthorizationInfo获取数据库中正确的权限
5、PermissionsAuthorizationFilter对item:query 和从realm中获取权限进行对比,如果“item:query”在realm返回的权限列表中,授权通过。

问题总结

1、在applicationContext-shiro.xml中配置过虑器链接,需要将全部的url和权限对应起来进行配置,比较发麻不方便使用。

2、每次授权都需要调用realm查询数据库,对于系统性能有很大影响,可以通过shiro缓存来解决。

shiro的过虑器

过滤器简称 对应的java类

anon    org.apache.shiro.web.filter.authc.AnonymousFilter
authc   org.apache.shiro.web.filter.authc.FormAuthenticationFilter
authcBasic      org.apache.shiro.web.filter.authc.BasicHttpAuthenticationFilter
perms   org.apache.shiro.web.filter.authz.PermissionsAuthorizationFilter
port    org.apache.shiro.web.filter.authz.PortFilter
rest    org.apache.shiro.web.filter.authz.HttpMethodPermissionFilter
roles   org.apache.shiro.web.filter.authz.RolesAuthorizationFilter
ssl org.apache.shiro.web.filter.authz.SslFilter
user    org.apache.shiro.web.filter.authc.UserFilter
logout  org.apache.shiro.web.filter.authc.LogoutFilter

anon:例子/admins/**=anon 没有参数,表示可以匿名使用。
authc:例如/admins/user/**=authc表示需要认证(登录)才能使用,FormAuthenticationFilter是表单认证,没有参数 
perms:例子/admins/user/**=perms[user:add:*],参数可以写多个,多个时必须加上引号,并且参数之间用逗号分割,例如/admins/user/**=perms["user:add:*,user:modify:*"],当有多个参数时必须每个参数都通过才通过,想当于isPermitedAll()方法。
user:例如/admins/user/**=user没有参数表示必须存在用户, 身份认证通过或通过记住我认证通过的可以访问,当登入操作时不做检查

认证

设置凭证匹配器

数据库中存储到的md5的散列值,在realm中需要设置数据库中的散列值它使用散列算法 及散列次数,让shiro进行散列对比时和原始数据库中的散列值使用的算法 一致。

这里写图片描述

授权

修改realm的doGetAuthorizationInfo,从数据库查询权限信息。
使用注解式授权方法。
使用jsp标签授权方法。

开启controller类aop支持

对系统中类的方法给用户授权,建议在controller层进行方法授权。

在springmvc.xml中配置

这里写图片描述

在controller方法中添加注解

这里写图片描述

jsp标签 授权

Jsp页面添加:

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

标签名称 标签条件(均是显示标签内容)

<shiro:authenticated>   登录之后
<shiro:notAuthenticated>    不在登录状态时
<shiro:guest>   用户在没有RememberMe时
<shiro:user>    用户在RememberMe时
<shiro:hasAnyRoles name="abc,123" > 在有abc或者123角色时
<shiro:hasRole name="abc">  拥有角色abc
<shiro:lacksRole name="abc">    没有角色abc
<shiro:hasPermission name="abc">    拥有权限资源abc
<shiro:lacksPermission name="abc">  没有abc权限资源
<shiro:principal>   显示用户身份名称
 <shiro:principal property="username"/>     显示用户身份中的属性值

修改itemsList.jsp页面

这里写图片描述

授权测试

当调用controller的一个方法,由于该 方法加了@RequiresPermissions(“item:query”) ,shiro调用realm获取数据库中的权限信息,看”item:query”是否在权限数据中存在,如果不存在就拒绝访问,如果存在就授权通过。

当展示一个jsp页面时,页面中如果遇到<shiro:hasPermission name="item:update">,shiro调用realm获取数据库中的权限信息,看item:update是否在权限数据中存在,如果不存在就拒绝访问,如果存在就授权通过。

问题:只要遇到注解或jsp标签的授权,都会调用realm方法查询数据库,需要使用缓存解决此问题。

CentOS 7下Oracle 11G RAC静默安装避坑指南:从网络规划到共享存储配置全流程 本文详细介绍了在CentOS 7环境下进行Oracle 11G RAC静默安装的全流程,包括网络规划、共享存储配置和系统参数调优等关键步骤。特别针对静默安装过程中的常见问题提供了实用的避坑指南和优化建议,帮助技术人员高效完成企业级数据库部署。 阅读详情

相关推荐

从T型结到Wilkinson:5分钟搞懂功分器选型指南(附最新射频测试数据对比)

本文通过对比T型结、电阻型和Wilkinson三种功分器的核心原理与实测数据,提供了清晰的射频功分器选型指南。文章结合最新的2.4GHz ISM频段测试数据,分析了插入损耗、回波损耗和端口隔离度等关键指标,并针对窄带物联网、射频测试及合成系统等不同应用场景,给出了具体的选型建议和实战提醒,帮助工程师根据系统需求做出最优决策。

bush的博客 305

SSM集成Shiro

一、Shiro概述 二、Shiro核心概念 三、Shiro认证 1.什么是认证 2.使用ini完成认证 1)创建工程 2)在maven中添加依赖jar包(不知道放在哪的话上篇文有讲哦) <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-...

Janet的博客 550

TwinCAT3新手必看:5分钟搞定EtherCAT从站PDO动态配置(附电流变量添加技巧)

本文为TwinCAT3新手提供了EtherCAT从站PDO动态配置的快速入门指南。文章详细解析了Process Data Object(PDO)在实时数据交换中的核心作用,并分步演示了在TwinCAT3工程中扫描从站、动态添加与映射PDO(包括接收PDO和发送PDO)的完整操作流程。重点分享了如何灵活添加并监控如电机实际电流等关键工艺变量的高级技巧,并针对不同品牌驱动器的兼容性问题提供了实用的调试心法和解决方案,帮助工程师快速上手并优化工业自动化系统。

xgboost6farmer的博客 452

ssm整合shiro安全框架(手把手入门)

ssm整合shiro安全框架

li410522的博客 495

京瓷扫描驱动安装_京瓷喷头拆解和供墨原理剖析

在工业喷头打印领域,京瓷喷头作为主流喷头广泛应用于喷墨行业,目前京瓷喷头市面上销售主要有两个系列:KJ4A和KJ4B。其中KJ4A系列设计是用于油性墨水,例如UV墨水,主要用在广告领域;而KJ4B设计用于水性墨水,例如活性、分散墨水等,主要用在数码印花领域。最近我们团队对京瓷喷头进行了拆解分析,本期和大家分享一下我们对京瓷喷头拆解和喷头供墨原理的研究。京瓷喷头介绍1. KJ4A系列(油性)如下图所...

weixin_39883906的博客 1672

vue中使用video-player视频插件,第一次无法监听父组件穿过来的值解决办法

需求: 页面![在这里插入图片描述](https://img-blog.csdnimg.cn/20201208141906802.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0FfOTg4OA==,size_16,color_FFFFFF,t_70) 作品清单是从后端请求回来的不同格式的url,前端需求根据后缀动态判断格式,然后对齐进行下载和

A_9888的博客 768

SSM 整合 Shiro 安全框架【快速入门】

更改web路径创建所需目录。

每日一记,每周一结。 768

CarMaker快速入门

本合集是小明师兄推出的CarMaker汽车仿真,CarMaker无论是传统动力学、动力系统开发、底盘系统开发还是目前智能驾驶辅助系统及智能驾驶系统开发有着非常重要的作用,可以有效节省开发周期和开发成本,基于仿真快速实现算法开发和系统验证。...

小明师兄的博客 1万+

SSM框架整合Shiro案例

SSM框架整合Shiro的小案例记录

小凯的博客 1433

在innovus中通过ecoAddRepeater插入buffer/inverter

在innovus中,我们可以通过ecoAddRepeater命令来在net上添加单个buffer或者成对的inverters。ecoAddRepeater命令的行为由命令setEcoMode控制。 选项说明 -cell <list of cells> 指定插入的buffer或者inverter的类型。 -net <netName> | -term <inst1/term1 inst2/term2 ...> -net指定需要插入buffer/inverters的

kevindas的博客 1万+

TPAMI 2024 | 重新思考多焦点图像融合中客观评价指标的有效性:一种基于统计的方法

作为一种延长光学镜头景深(DOF)的有效技术,多焦点图像融合最近成为图像处理社区的一个活跃话题。然而,该领域仍然存在一个未解决的主要问题,即缺乏选择客观评价指标的通用标准。因此,不同研究中使用的指标往往差异显著,导致难以实现公正的评估。为了解决这个问题,本文提出了一种基于统计的方法来验证多焦点图像融合中客观指标的有效性。核心思想是采用统计相关性度量来评估某个融合指标与一些流行的全参考图像质量评估模型之间的性能一致性。

小白学视觉 329

SSM+Shiro安全框架整合(完成安全认证--登录+权限授权)+ssm整合shiro前后端分离

搭建ssm框架,ssm整合shiro,完成登录认证功能,权限授权功能+ssm整合shiro前后端分离

不惧困难 顽强拼搏 1028

YOLO26改进策略【损失函数篇】| AAAI 2025 SD Loss,基于目标尺度动态调整尺度损失和位置损失的影响系数,减少 IoU 标签波动

在红外小目标检测任务里,基于交并比的损失存在波动问题,像边界框(BBox)标签的IoU损失波动最高可达86%,较小目标的IoU损失稳定性更差,严重影响模型稳定性和回归效果。同时,现有损失函数没有充分考虑不同目标尺度下对尺度和位置的敏感度差异,,并且掩码标签的位置损失在处理漏检物体时难以收敛,容易产生误报。这些问题限制了模型在不同尺度目标上的检测性能,为解决这些问题,提出了损失函数。

Limiiiing的博客 393

ssm项目整合shiro

pom.xml       <properties> <shiro.version>1.2.2</shiro.version>     </properties> <dependency> <groupId>org.apache....

dengcuol09165的专栏 114

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

SSM项目整合shiro

1.首先,导入shiro的依赖 <!-- shiro --> <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-core</artifactId> <version>${shiro.version}</...

weixin_43538993的博客 225

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Apache Shiro(二)shiro+ssm项目整合

Shiro+SSM一、导入相关依赖 前提:创建一个mavenWeb项目,导入相关依赖 一、导入相关依赖

weixin_46122805的博客 360

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

SSM项目整合Shiro进行身份验证

简介 身份验证指的是系统一般需要提供一些标识信息来表明登录者的身份,如提供用户名和密码,或手机号和验证码来证明。在 Shiro 中,用户需要提供principals(身份)和 credentials(证明)给 Shiro来验证用户身份。 principals:身份即为主体的标识属性,它可以是任何属性,如用户名、 邮箱,手机号等,必须保证唯一。一个主体可以有多个principals,但只有一个 P...

huangjhai的博客 547

1.3 SSM项目整合Shiro

1.添加相关依赖 <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-spring</artifactId> <version>1.3.2</version> </dependency> <dependency> <groupId>org.apa

棒棒的邦邦 167

ssm项目整合shiro使用ehcache出错

首先贴出spring-shiro.xml <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/sch

Uranus_shizi的博客 1453

Java经典框架之Shiro

在没有使用缓存的情况下,我们每次发送请求都会调用一次doGetAuthorizationInfo方法来进行用户的授权操作,但是我们知道,一个用户具有的权限一般不会频繁的修改,也就是每次授权的内容都是一样的,所以我们希望在用户登录成功的第一次授权成功后将用户的权限保存在缓存中,下一次请求授权的话就直接从缓存中获取,这样效率会更高一些。当用户提交的请求没有权限的时候,系统默认的提示是500错误,这种效果体验肯定是不好的,这时我们可以自定义一个用户容易接受的错误页面,具体步骤如下。) 放的第一个参数。

m0_52514893的博客 1334

java 多项目整合_Maven工程聚合,多个Java工程、web工程聚合

最近写个自己的小项目,牵扯到maven工程聚合问题,网上看了大量资料研究了下,成功了,按照自己的理解简单粗暴的记录下。。。一、模块结构粗略画了个草图表示下现有模块之间的关系二、模块作用及配置文件shiro提供shiro框架所需的jar包及shiro框架可以共用的相关代码pom略,仅仅为shiro相关jar包配置ssm提供ssm框架所需的jar包及与ssm框架相关的可以共用的相关代码pom略,仅仅为...

weixin_39663933的博客 1506

SSM整合之企业级后台管理系统(8) - Maven项目整合框架Spring+SpringMVC+MyBatis+Shiro+Log4j

“纸上得来终觉浅,绝知此事要躬行” ------陆游 经过前面教程的层层铺垫,我们来到了整合SSM框架(SSM: Spring SpringMVC MyBatis)的关键一步。本篇教程将给大家介绍如何在上一篇教程创建的Maven项目中,一步步整合Spring+SpringMVC+MyBatis+Shiro+Log...

974

排除maven jar冲突 maven tomcat插件启动报错 filter转换异常

最近在搞一个ssm+shiro的整合 用的maven tomcat插件 启动的时候报错,提示 mavenorg.springframework.web.filter.CharacterEncodingFiltercannot be cast to javax.servlet.Filter 网上查找资料后说是jar包冲突,写了一个测试类 import...

weixin_34409822的博客 236

shiro与spring整合

文章目录首先需要一个简单的ssm项目:pom配置web.xml配置spring.xml配置自定义realm 首先需要一个简单的ssm项目: 简单的ssm项目 pom配置 在项目pom.xml里面加入shiro依赖: <properties> <shiro.version>1.4.2</shiro.version> </proper...

你就像甜甜的益达 644

Shiro认证-SSM

Shiro从Realm获取安全数据(如用户、角色、权限),就是说SecurityManager要验证用户身份,那么它需要从Realm获取相应的用户进行比较以确定用户身份是否合法;也需要从Realm得到用户相应的角色/权限进行验证用户是否能进行操作;最基础的是Realm接口,CachingRealm负责缓存处理,AuthenticationRealm负责认证,AuthorizingRealm负责授权。盐加密工具类,在做新增用户的时候使用,将加密后的密码、及加密时候的盐放入数据库;1、导入pom相关依赖。

web18334137065的博客 219
上一篇: shiro初步 shiro授权
下一篇: shiro+ehcache缓存 和 验证码 和 记住我
杜鲁门
博客等级 码龄11年 219粉丝 316原创
评论 7
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值