问题描述:web项目中使用shiro做登录权限控制,当shiro执行logout后,直接返回一个jsp路径会抛出org.apache.shiro.session.UnknownSessionException异常,浏览器页面中出现500错误. 原因:当shiro登出后,session被清除,然后Controller直接返回页面时,中间是有执行readSession()方法的,但是session已经被清掉了,所以抛出org.apache.shiro.session.UnknownSessionEx…
一.背景 最近在整合了Spring+Shiro+Redis实现tomcat集群session共享的问题之后,发布以后运行以后发现老是会出现:org.apache.shiro.session.UnknownSessionException: There is no session with id [xxxx]的问题,具体问题如下截图: 二.出现这个问题的原因 只所以出现这个问题是因为在shiro的DefaultWebSessionManager类中,默认Cookie名称是JSESSIONID,这样…
org.apache.shiro.session.UnknownSessionException: There is no session with id [xxxx]的解决方案 背景描述 SpringBoot项目,使用Shiro进行权限管理.测试过程中发现执行文件导入时最开始一切正常,但是导入几次之后再次执行导入就会报错,此时执行其他功能一切正常 排查过程 [x] 1. 网上搜索,大部分都是说法如下: Shiro的Cookie名称默认是JSESSIONID,与servlet容器冲突.修改Shi…
0.写在前面的话 好久没写博客了,诶,好多时候偷懒直接就抓网上的资料丢笔记里了,也就没有自己提炼,偷懒偷懒.然后最近参加了一个网络课程,要交作业的那种,为了能方便看下其他同学的作业,就写了个爬虫把作业爬下来,进而想到如果以后还有类似这种情况,我需要一个非常轻量化的架子,但是权限依然是必须要用到的,否则写个接口人人都可以调用那还得了,但是我仅仅需要一个人或者一两个人的权限配置就可以了,所以像之前我写过一个基于RBAC的架子甚至都还是有点嫌重(而且那个架子还没有前端页面,哈,真是懒),所以想到了用s…
在我们的开发当中  我们一般权限都是个 比较繁琐 但又必不可少的 一部分 [不管我们的 数据库设计  还是我们采用何种技术 我们的权限库表 大多都是大同小异  业务逻辑也是如此] 在我们不使用任何框架的时候 我们也是可以做到 但是细节过于麻烦   在很多时候 都是重复造轮子的过程  所以出现了 很多开源比较休息的额权限框架如:shiro  Spring security..... 废话不多说了  今天我们来讲讲shiro 在我们 设计库表时候 : 我们大多情况 是这样的 用户表 : 用户角色关系…
简介 Apache Shiro是一个功能强大且灵活的开放源代码安全框架,可以清楚地处理认证,授权,企业会话管理和加密.Apache Shiro的首要目标是易于使用和理解.有时候安全性可能非常复杂和痛苦,框架应该尽可能地掩盖复杂性,并对外公开干净且直观的API,以简化开发人员为了确保其应用程序安全的工作. 以下是您可以使用Apache Shiro完成的一些事情: 1.认证用户以证实其身份. 2.为用户执行访问控制,例如确定是否为用户分配了某个安全角色或者确定用户是否允许执行某项操作. 3.在任何环…
Apache Shiro是Java的一个安全框架.目前,使用Apache Shiro的人越来越多,因为它相当简单,对比Spring Security,可能没有Spring Security做的功能强大,但是在实际工作时可能并不需要那么复杂的东西,所以使用小而简单的Shiro就足够了. 因为我总结的是使用SpringMVC和Apache Shiro整合,注重的是整合和使用,至于基础,我这里就不细说了.按照惯例,既然是需要创建项目,那么我们首先需要JAR包,Apache shiro的架包除了除了基本…
Apache Shiro是Java的一个安全框架.目前,使用Apache Shiro的人越来越多,因为它相当简单,对比Spring Security,可能没有Spring Security做的功能强大,但是在实际工作时可能并不需要那么复杂的东西,所以使用小而简单的Shiro就足够了. 因为我总结的是使用SpringMVC和Apache Shiro整合,注重的是整合和使用,至于基础,我这里就不细说了.按照惯例,既然是需要创建项目,那么我们首先需要JAR包,Apache shiro的架包除了除了基本…
SpringMVC整合Shiro,Shiro是一个强大易用的Java安全框架,提供了认证.授权.加密和会话管理等功能. 第一步:配置web.xml <!-- 配置Shiro过滤器,先让Shiro过滤系统接收到的请求 --> <!-- 这里filter-name必须对应applicationContext.xml中定义的<bean id="shiroFilter"/> --> <!-- 使用[/*]匹配所有请求,保证所有的可控请求都经过Shiro…
项目用到Shiro就从网上找一些案例看看吧,结果看了很多都是maven的,没有办法就自己弄了一个.废话不多说,原理自己找开始上菜. 配置web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns…
Apache shiro集群实现 (一) shiro入门介绍 Apache shiro集群实现 (二) shiro 的INI配置 Apache shiro集群实现 (三)shiro身份认证(Shiro Authentication) Apache shiro集群实现 (四)shiro授权(Authentication)--访问控制 Apache shiro集群实现 (五)分布式集群系统下的高可用session解决方案 Apache shiro集群实现 (六)分布式集群系统下的高可用session…
shiro是用来干嘛的?从它的官网上(http://shiro.apache.org/)基本可以了解到,她主要提供以下功能: (1)Authentication(认证) (2)Authorization(授权) (3)Session Management(会话管理) (4)Cryptography (加密) 首先,认证服务,也就是说通过她可以完成身份认证,让她去判断用户是否为真是的会员. 其次,授权服务,说白了就是"访问控制"服务,也就是让她来识别用户拥有哪些权限.再说的白一点,就是通…
前言: 在前后端分离的项目中, 在使用shiro的时候, 我们绝大部分时候, 并不想让浏览器跳转到那个页面去, 而是告诉前端, 你没有登录, 或者没有访问权限. 那这时候, 我们就需要返回json字符串给前端, 让前端解析后, 根据状态执行相应的操作. 实现: 由于我现在的系统, 权限并不复杂, 所以在这里, 我自定义了一个过滤器. 当然, 如果想要更加省事, 可以继承user(org.apache.shiro.web.filter.authc.UserFilter) 或者 authc(org.…
shrio官网:https://shiro.apache.org/ Apache Shiro是一个功能强大且易于使用的Java安全框架,可执行身份验证,授权,加密和会话管理.借助Shiro易于理解的API,您可以快速轻松地保护任何应用程序 - 从最小的移动应用程序到最大的Web和企业应用程序.spring中也有自带的安全框架spring security.shrio是通过对其的再封装,实现了自己的一套全新架构. 正巧spring boot项目中也需要用到用户的身份验证以及权限控制,本来想用AOP…
Shiro 整合SpringMVC 并且实现权限管理,登录和注销 Apache Shiro是Java的一个安全框架.目前,使用Apache Shiro的人越来越多,因为它相当简单,对比Spring Security,可能没有Spring Security做的功能强大,但是在实际工作时可能并不需要那么复杂的东西,所以使用小而简单的Shiro就足够了. 因为我总结的是使用SpringMVC和Apache Shiro整合,注重的是整合和使用,至于基础,我这里就不细说了.我使用的是maven进行项目的构…
前言 开心一刻 老师对小明说:"乳就是小的意思,比如乳猪就是小猪,乳名就是小名,请你用乳字造个句" 小明:"我家很穷,只能住在40平米的乳房" 老师:"..., 这个不行,换一个" 小明:"我每天上学都要跳过我家门口的一条乳沟" 老师:"......, 这个也不行,再换一个" 小明:"老师,我想不出来了,把我的乳头都想破了!" 路漫漫其修远兮,吾将上下而求索! github:https:…
引言: 本人在使用spring集成shiro是总是报“no bean named 'shiroFilter' is defined”,网上的所有方式挨个试了一遍,又检查了一遍, 还是没有解决,最后,抱着试试看的心态,采用单元调试的方法终于解决了. 1.原因记录 以下是我报错的原因: 报错部分标记为红色,也被我注释掉. 第一个报错的地方是缓存管理器配置的有问题,第二个报错的地方是shiroFilter缺少值. <beans xmlns="http://www.springframework.…
1.普通用户实现redis共享session 1.配置 #cache指定缓存类型 spring.cache.type=REDIS #data-redis spring.redis.database=15 //单节点配置 可择库 spring.redis.password= spring.redis.host=192.168.210.*** //单节点配置 spring.redis.port=6379 spring.redis.timeout=2000 spring.redis.jedis.poo…
什么是redis:redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorted set --有序集合)和hash(哈希类型).这些数据类型都支持push/pop.add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的.在此基础上,redis支持各种不同方式的排序.与memcached一样,为了保证效率,数据都是缓存在内存中.区别的是redis会…
Web 项目使用shiro,针对这个问题可以重写DefaultWebSessionManager,将缓存数据存放到request中,这样可以保证每次请求(可能会多次调用doReadSession方法)只请求一次redis.具体扩展如下: 添加MyWebSessionManager.java package com.xiyinli.web.shiro; import org.apache.shiro.session.ExpiredSessionException; import org.apach…
细节: ---[urls]部分配置,其格式是    url=拦截器[参数] ,拦截器[参数] ---如果当前请求的 url 匹配 [urls] 部分或者某个url模式,将会执行配置的拦截器 ---anon(anonymous)拦截器表示匿名访问(即不需要登陆验证) ---authc(authentication)拦截器的表示需要身份认证之后才能访问 <property name="filterChainDefinitions"> <value> /login.j…
引入shiro依赖 <!-- shiro --> <dependency> <!-- shiro-core Required in all environments. --> <groupId>org.apache.shiro</groupId> <artifactId>shiro-core</artifactId> <version>${shiro.version}</version> </…
备注:文中配置基本来自尚硅谷视频教程,也可自行参照shiro官方教程:http://shiro.apache.org/spring.html 1.首先通过maven导入shiro相关依赖jar包,修改pom.xml文件 <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-all</artifactId> <version>1.3.2</versio…
1. What is Shiro? Apache旗下一个开源的Java权限框架,它将软件系统的安全认证相关的功能抽取出来,实现用户身份认证,权限授权.加密.会话管理等功能,组成了一个通用的安全认证框架. 2. Why is Shiro? 使用Shiro可以快速完成认证.授权等功能的开发: Shiro不依赖于任何容器,可以运行在web应用.非web应用.集群分布式等应用中. 3. How to use Shiro? Shiro主要包括认证.授权.会话管理.加密.缓存等.整体架构图如下: 重要名词解…
采用maven构建项目 1pom.xml中加入shiro依赖 <!-- shiro --> <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-core</artifactId> <version>1.2.1</version> </dependency> <dependency> <groupId&…
原文:http://www.myexception.cn/software-architecture-design/1815507.html Shiro通过Redis管理会话实现集群 写在前面 1.在上一篇帖子 Shiro一些补充 中提到过Shiro可以使用Shiro自己的Session或者自定义的Session来代替HttpSession 2.Redis/Jedis参考我写的 http://sgq0085.iteye.com/category/317384 一系列内容 一. SessionDa…
之前用的单机Shiro实现用户单点登陆,基本问题不大,但是集群间的session共享单靠Shiro就不好实现了.所以就借助Redis数据库来实现. 这里Redis的搭建我之前说过,感兴趣的可以去看看:http://www.cnblogs.com/hz-cww/p/6074062.html. 一.pom.xml <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifac…
文章目录 集成 Spring 集成中的坑 shiroFilter 的工作原理 权限配置细节 集成 Spring pom.xml 添加shiro相关的依赖 我使用的版本是 ${version.shiro} -> 1.3.2 <!-- shiro配置 --> <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-core</artifactId> <…
在单Realm的基础上,进行如下内容的修改 原有的ShiroRealm.java: package com.atguigu.shiro.realms; import org.apache.shiro.authc.AuthenticationException; import org.apache.shiro.authc.AuthenticationInfo; import org.apache.shiro.authc.AuthenticationToken; import org.apache.…
首先,我们要明确认证的流程: 1. 获取当前的 Subject. 调用 SecurityUtils.getSubject(); 2. 测试当前的用户是否已经被认证. 即是否已经登录. 调用 Subject 的 isAuthenticated() 3. 若没有被认证, 则把用户名和密码封装为 UsernamePasswordToken 对象 1). 创建一个表单页面 2). 把请求提交到 SpringMVC 的 Handler 3). 获取用户名和密码. 4. 执行登录: 调用 Subject 的…