shiro

Springboot vue 前后分离 跨域 Activiti6 工作流 集成代码生成器 shiro权限

一个人想着一个人 提交于 2020-03-02 12:07:27
特别注意 : Springboot 工作流 前后分离 + 跨域 版本 (权限控制到菜单和按钮) 后台框架: springboot 2.1.2+ activiti 6.0.0+ mybaits+maven+接口 前端页面:html +vue.js 形式 jquery ajax 异步跨域 json 格式数据交互 前后分离,前后台分开部署 (特别注意,前端用的vue.js, 就是html页面引入vue.js形式, 用tomcat部署运行,更适合后台开发者) 工作流模块 ---------------------------------------------------------------------------------------------------------- 1. 模型管理 :web在线流程设计器、预览流程xml、导出xml、部署流程 2. 流程管理 :导入导出流程资源文件、查看流程图、根据流程实例反射出流程模型、激活挂起 3. 运行中流程 :查看流程信息、当前任务节点、当前流程图、作废暂停流程、指派待办人 4. 历史的流程 :查看流程信息、流程用时、流程状态、查看任务发起人信息 5. 待办任务 :查看本人个人任务以及本角色下的任务、办理、驳回、作废、指派一下代理人 6. 已办任务 :查看自己办理过的任务以及流程信息、流程图、流程状态(作废 驳回 正常完成) 注:

Log4j日志输出详解

泪湿孤枕 提交于 2020-03-02 04:39:30
log4j的初始化,Logger的实例为NOPLogger,所有Appender,委托给 rootLogger管理,今天我们来看一下,日志的打印输出。 日志输出源头为下一句 Java代码 log.info( "========test daily level info=========" ); 我们来看一下,这一句都做了些什么? Java代码 public final class NOPLogger extends Logger public class Logger extends Category 而NOPLogger,Logger,没有info方法,来看Category //Category Java代码 下载 public class Category implements AppenderAttachable { AppenderAttachableImpl aai; static { FQCN = (org.apache.log4j.Category. class ).getName(); } //输出日志 public void info(Object message) { //查看info日志,是否开启 if (repository.isDisabled( 20000 )) return ; //如果INFO,大于等于有效的日志级别,则输出日志 if (Level

Shiro -- (七) Web 集成

折月煮酒 提交于 2020-03-01 16:48:01
简介:   Shiro 提供了与 Web 集成的支持,其通过一个 ShiroFilter 入口来拦截需要安全控制的 URL,然后进行相应的控制,ShiroFilter 类似于如 Strut2/SpringMVC 这种 web 框架的前端控制器,其是安全控制的入口点,其负责读取配置(如 ini 配置文件),然后判断 URL 是否需要登录 / 权限等工作。 Url 匹配方式   ? 匹配一个字符 /admin? 可以匹配/admin1 或者/admin2 但是不能匹配/admin12 或者/admin   * 匹配零个或者一个或者多个字符 /admin* 可以匹配 /admin 或者/admin1 或者 /admin12 但是不能匹配/admin/abc   ** 匹配零个或者多个路径 /admin/** 可以匹配/admin /admin/a 或者/admin/a/b pom.xml <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.0.1</version> <scope>provided</scope> </dependency> <dependency> <groupId>junit</groupId> <artifactId

shiro实现session共享

旧街凉风 提交于 2020-03-01 14:29:17
session共享:在多应用系统中,如果使用了负载均衡,用户的请求会被分发到不同的应用中,A应用中的session数据在B应用中是获取不到的,就会带来共享的问题。 假设:用户第一次访问,连接的A服务器,进行了登录操作进入了系统,当用户再次操作时,请求被转发到了B服务器,用户并没有在B进行登录,此时用户又来到了登录页面,这是难以理解和接受的,这就引出了session共享。 对于shiro框架如何实现session的共享呢?shiro的共享分为两个方面,一个是session的共享,一个是cache的共享。接下来结合redis分别来实现这两个方面。 一.Session的共享 shiro提供了自己的会话管理器sessionManager,其中有个属性叫sessionDao它来处理所有的会话信息。 对于sessionDao,shiro也提供了自己的实现,常用的是ehcache的实现。Ehcache是jvm级别的,多个应用就会产生多个缓存示例,无法做到信息跨进程共享。要实现共享,就要重写sessionDao,通过实现我们自己的Dao,做到同一个会话信息的唯一性。 看下面一幅类图: 1.继承shiro提供的抽象sessionDao,重写create,read,delete等方法。 2.考虑系统的扩展性,我们抽象出一个数据仓储接口,并提供一个redis的实现方式

细说shiro之六:session管理

ⅰ亾dé卋堺 提交于 2020-03-01 12:10:07
官网: https://shiro.apache.org/ 我们先来看一下shiro中关于Session和Session Manager的类图。 如上图所示,shiro自己定义了一个新的Session接口,用于统一操作接口,并通过SessionManager实现Session管理。 其中的3个实现类HttpServletSession,SimpleSession和StoppingAwareProxiedSession是我们经常需要打交道的。 HttpServletSession 首先,我们来看看org.apache.shiro.web.session.HttpServletSession的实现。 public HttpServletSession(HttpSession httpSession, String host) { if (httpSession == null) { String msg = "HttpSession constructor argument cannot be null."; throw new IllegalArgumentException(msg); } if (httpSession instanceof ShiroHttpSession) { String msg = "HttpSession constructor argument

Shiro session和Spring session一样吗?

烂漫一生 提交于 2020-03-01 12:08:53
出自:https://yq.aliyun.com/articles/114167?t=t1 1. 疑问 我们在项目中使用了spring mvc作为MVC框架,shiro作为权限控制框架,在使用过程中慢慢地产生了下面几个疑惑,本篇文章将会带着疑问慢慢地解析shiro源码,从而解开心里面的那点小纠纠。 (1) 在spring controller中,request有何不同呢 ? 于是,在controller中打印了request的类对象,发现request对象是org.apache.shiro.web.servlet.ShiroHttpServletRequest ,很明显,此时的 request 已经被shiro包装过了。 (2)众所周知,spring mvc整合shiro后,可以通过两种方式获取到session: 通过Spring mvc中controller的request获取session Session session = request.getSession(); 通过shiro获取session Subject currentUser = SecurityUtils.getSubject(); Session session = currentUser.getSession(); 那么,问题来了, 两种方式获取的session是否相同呢 ?

Apache shiro集群实现 (一) shiro入门介绍

醉酒当歌 提交于 2020-03-01 12:04:43
近期在ITOO项目中研究使用Apache shiro集群中要解决的两个问题,一个是Session的共享问题,一个是授权信息的cache共享问题,官网上给的例子是Ehcache的实现,在配置说明上不算很详细,我在我们的项目中使用的是nosql(Redis)替代了ehcache做了session和cache的存储,接下来从shiro、Cas、redis、session等等基础知识、基本原理集成的角度来不断的深入分析,系列文章篇幅很长,很丰富,尽请期待! Apache shiro集群实现 (一) shiro入门介绍 Apache shiro集群实现 (二) shiro 的INI配置 Apache shiro集群实现 (三)shiro身份认证(Shiro Authentication) Apache shiro集群实现 (四)shiro授权(Authentication)--访问控制 Apache shiro集群实现 (五)分布式集群系统下的高可用session解决方案 Apache shiro集群实现 (六)分布式集群系统下的高可用session解决方案---Session共享 Apache shiro集群实现 (七)分布式集群系统下---cache共享 Apache shiro集群实现 (八) web集群时session同步的3种方法 今天我们先来介绍shiro的基本概念 一

SpringBoot不自动加载Shiro配置 (No bean of type 'org.apache.shiro.realm.Realm' found)

百般思念 提交于 2020-03-01 08:24:15
在很多SpringBoot项目中,common或者parent 做了shiro依赖,这样其他模块项目 总是提示 No bean of type 'org.apache.shiro.realm.Realm' found Action: Please create bean of type 'Realm' or add a shiro.ini in the root classpath (src/main/resources/shiro.ini) or in the META-INF folder (src/main/resources/META-INF/shiro.ini). 其实就是SpringBoot自动加载机制,在 shiro-spring-boot-starter 有默认配置。所以需要屏蔽shiro 怎么办???这是第二次哉到这里了 自己乱琢磨 在 @SpringBootApplication( 输入 ShiroAutoConfiguration 把出现的三个匹配的项目排除 就可以了 @SpringBootApplication(exclude = {ShiroAnnotationProcessorAutoConfiguration.class, ShiroAutoConfiguration.class, ShiroBeanAutoConfiguration.class})

SpringBoot&Shiro实现用户认证

坚强是说给别人听的谎言 提交于 2020-02-29 17:03:42
SpringBoot&Shiro实现用户认证 实现思路 思路:实现认证功能主要可以归纳为3点 1.定义一个ShiroConfig配置类,配置 SecurityManager Bean , SecurityManager为Shiro的安全管理器,管理着所有Subject; 注:如果有不太清楚shiro的朋友,可以去各大学习平台上学习一下。 2.在ShiroConfig中配置 ShiroFilterFactoryBean ,它是Shiro过滤器工厂类,依赖SecurityManager ; 3.自定义Realm实现类,包含 doGetAuthorizationInfo() 和 doGetAuthenticationInfo() 方法 , 1.导入依赖 我们搭建好Spring Boot web程序后,导入Shiro,Mybatis,mysql, thymeleaf 相关依赖: <!-- SpringBoot Web容器 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- SpringBoot集成mybatis框架 --> <dependency> <groupId>org

Shiro总结一架构,动态权限配置,登录认证实现

家住魔仙堡 提交于 2020-02-29 14:35:05
首先说明一点,我没有删除和shiro无关的很多代码,主要是希望大家能更清楚的看到完整项目中的配置,其次,下面文中的使用不会采用shiro配置文件的方式,而是采用实际web项目中动态配置权限认证的方式。如果需要了解文件配置的方式可以参考 https://www.w3cschool.cn/shiro/andc1if0.html 完整的项目地址 https://gitee.com/jiansin/ssm 简单介绍 Apache Shiro 是 Java 的一个安全框架。目前,使用 Apache Shiro 的人越来越多,因为它相当简单,对比 Spring Security,可能没有 Spring Security 做的功能强大,但是在实际工作时可能并不需要那么复杂的东西,所以使用小而简单的 Shiro 就足够了。 基本功能 Authentication :身份认证 / 登录,验证用户是不是拥有相应的身份; Authorization :授权,即权限验证,验证某个已认证的用户是否拥有某个权限;即判断用户是否能做事情,常见的如:验证某个用户是否拥有某个角色。或者细粒度的验证某个用户对某个资源是否具有某个权限; Session Manager :会话管理,即用户登录后就是一次会话,在没有退出之前,它的所有信息都在会话中;会话可以是普通 JavaSE 环境的,也可以是如 Web 环境的;