shiro

Spring使用自定义切面(aop)方法时不生效

十年热恋 提交于 2020-02-10 18:43:46
这里我以shiro+springboot的一个例子为例,理解为主即可 1.先了解怎么做到spring切面编程(aop) 1).制作切面类 2).在userServiceimpl加入切面注解 2.确定在那里使用到被切对象 1).shiro中使用到userService 2.)在 controller使用到 注意其中config(springboot的启动类)对象中加载shiro对象 执行: controller访问的时候发现无法触发切面方法 解决: 这是因为在spring加载shiro(UserRealm类)的时候使用此时切面类还没加载,但是在UserRealm类中又注入了UserServiceImpl类(注意:此时不是代理类,就是个普通类而已,且该类已经注入到spring容器中,不会再注入第二次了),因此在controller调用的userService方法的时候不是代理类,所以无法做到切面。 解决方法:在UserRealm对象中的UserService加上@Lazy注解,延迟注入到Spring容器,让切面类加载完后再注入 来源: CSDN 作者: 风吹底裤飘 链接: https://blog.csdn.net/qq_37431224/article/details/104252084

Springboot集成Shiro和Cas实现单点登录(服务端篇CAS5)

时光总嘲笑我的痴心妄想 提交于 2020-02-09 23:08:09
什么是单点登录? 先说一个需求场景,比如:一个企业的内部有N多个子系统,每个子系统都有一套自己的用户名和密码,那么企业的员工要登录N个子系统,这样一个员工 就要记住N个用户名和密码,就算各个子系统的用户名和密码都是统一的,登录每个子系统都要输入用户名和密码进行登录也是一个繁琐的操作过程,那么单点登录功能由此便应运而生了。 单点登录 (Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。 CAS架构图 这里直接说CAS整体架构是因为这不是一个入门教程,我已经默认你知道什么是SSO、什么是CAS,以及你已经装好了开发工具IDEA和Java环境Jdk1.8,并且你也知道什么是Web容器,知道Tomcat8.5+该从哪下载并启动部署,你也知道什么是Maven项目该怎么引入相关的jar包等等,所以如果你不具备以上这些知识,那么CAS服务端的学习我建议你还是先不要开始,弄清楚前面的知识点,才能畅通无阻的学习CAS服务端。 好了,这里先放架构图: 现在来讲解这个架构图: 首先搭建好CAS服务端后,服务端会自定义一个数据库和用户表,用户表中存放的是用户名和密码,通过访问子系统的URL地址,如果CAS系统判定你没有登录,就会将URL重定向到CAS的服务端登录界面

Shiro简介

杀马特。学长 韩版系。学妹 提交于 2020-02-09 18:31:09
之前在工作中有比较快速的学习过Shiro安全框架,但经过一年的荒废,已经不是很熟悉了,通过这个系列,深入研究和学习Shiro的一些知识,填补安全管理方面的知识漏洞。使我们在web 开发领域更具竞争力,不做只会CRUD的程序员! 一、Shiro介绍 Shiro是一个Java安全框架,执行身份验证、授权、密码、会话管理。Shiro是Apache 的一个开源项目,前身是JSecurity 项目,始于2003年初。 Shiro 可以为任何应用提供安全保障 - 从命令行应用、移动应用到大型网络及企业应用。 shiro 解决了应用安全的四要素: 认证 - 用户身份识别,常被称为用户“登录”; 授权 - 访问控制; 密码加密 - 保护或隐藏数据防止被偷窥; 会话管理 - 每用户相关的时间敏感的状态。 同时,Shiro另外支持了一些辅助特性:如 Web 应用安全、单元测试和多线程,它们的存在强化了上面提到的四个要素。 二、Shiro的优势 从 2003 年至今,框架选择方面的情况已经改变了不少,但今天仍有令人信服的理由让你选择 Shiro。其实理由相当多,Apache Shiro: 1、易于使用 - 易用性是这个项目的最终目标。应用安全有可能会非常让人糊涂,令人沮丧,并被认为是“必要之恶”【译注:比喻应用安全方面的编程。】。若是能让它简化到新手都能很快上手,那它将不再是一种痛苦了。 2、广泛性 -

细说shiro之自定义filter

别说谁变了你拦得住时间么 提交于 2020-02-09 05:28:01
写在前面 我们知道,shiro框架在Java Web应用中使用时,本质上是通过filter方式集成的。 也就是说,它是遵循过滤器链规则的:filter的执行顺序与在web.xml中定义的顺序一致,如下所示: <filter> <filter-name>securityFilter</filter-name> <filter-class>com.lenovo.iot.devicemanager.filter.SecurityFilter</filter-class> </filter> <filter-mapping> <filter-name>securityFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- The filter-name matches name of a 'shiroFilter' bean inside applicationContext.xml --> <filter> <filter-name>shiroFilter</filter-name> <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> <init-param> <param-name

Shiro 自定义登陆、授权、拦截器

梦想的初衷 提交于 2020-02-09 05:14:13
Shiro 登陆、授权、拦截 按钮权限控制 一、目标 Maven+Spring+shiro 自定义登陆、授权 自定义拦截器 加载数据库资源构建拦截链 使用总结: 1、需要设计的数据库:用户、角色、权限、资源 2、可以通过,角色,权限,两个拦截器同时确定是否能访问 3、角色与权限的关系, role1=permission1,permission2,多级的权限:sys:permission1,拥有高级权限同时用于低级权限。 4、perms["permission1"] 为权限 5、拦截器机制介绍了拦截角色还是权限 6、角色与权限 是两个概念 7、权限-资源,一对一。资源分为上下级,因此权限分为父权限,子权限。创建资源的时候,创建权限。权限里资源的别名 8、角色-权限,一对多。角色里权限的别名 9、按钮是通过权限来控制的 10、防止有父级资源可以访问,子级资源不能访问的情况,不适用 sys:add 权限写法 二、代码 1、Pom.xml 1 <properties> 2 <spring.version>4.3.4.RELEASE</spring.version> 3 </properties> 4 <dependency> 5 <groupId>junit</groupId> 6 <artifactId>junit</artifactId> 7 <version>4.9</version

SpringBoot整合Shiro实现RememberMe

给你一囗甜甜゛ 提交于 2020-02-08 23:33:01
接上 Springboot Shiro实现用户验 shiro提供了RememberMe功能,用户登录状态不会因为浏览器的关闭而失效,知道cookie过期 更改ShiroConfig 加入cookie管理配置 /** * cookie对象 * @return */ public SimpleCookie rememberMeCookie ( ) { // 设置cookie名称,对应login.html页面的<input type="checkbox" name="rememberMe"/> SimpleCookie cookie = new SimpleCookie ( "rememberMe" ) ; // 设置cookie的过期时间,单位为秒,这里为一天 cookie . setMaxAge ( 86400 ) ; return cookie ; } /** * cookie管理对象 * @return */ public CookieRememberMeManager rememberMeManager ( ) { CookieRememberMeManager cookieRememberMeManager = new CookieRememberMeManager ( ) ; cookieRememberMeManager . setCookie (

Shiro--概述、架构

北城余情 提交于 2020-02-08 20:42:21
简介 Apache Shiro是Java的一个安全(权限)框架 Shiro可以非常容易的开发出足够好的应用,其不仅可以用在JavaSE环境,也可以用在JavaEE环境 Shiro可以完成:认证、授权、加密、会话管理、与Web继承、缓存等。 下载: http://shiro.apache.org/ 功能简介 Authentication: 身份认证/登录,验证用户是不是拥有相应的身份; Authorization: 授权,即权限验证,验证某个已认证的用户是否具有某个权限;判断用户是否能进行什么操作,如:验证某个用户是否拥有某个角色。或者细粒度的验证某个用户对某个资源是否具有某个权限; Session Manager: 会话管理,即用户登录后就是一次会话,在没有退出之前,它的所有信息都在会话中;会话可以是普通JavaSE环境,也可以是Web环境; Cryptography: 加密,保护数据的安全性,如密码加密存储到数据库,而不是明文存储; Web Support: Web支持,可以非常容器的集成到Web环境; Caching: 缓存,比如用户登录后,其用户信息、拥有的角色/权限不必每次去查,这样可以提高效率; Concurrency: Shiro支持多线程应用的并发验证,即在一个线程中开启另一个线程,能把权限自动传播过去; Testing: 提供测试支持; Run As:

Spring Boot Shiro权限管理3

纵然是瞬间 提交于 2020-02-04 22:31:44
原文地址:https://412887952-qq-com.iteye.com/blog/2299780 在pom.xml中加入缓存依赖;注入缓存; (a) 在pom.xml文件中加入依赖: <!-- shiro ehcache --> <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-ehcache</artifactId> <version>1.2.2</version> </dependency> <!-- 包含支持UI模版(Velocity,FreeMarker,JasperReports), 邮件服务, 脚本服务(JRuby), 缓存Cache(EHCache), 任务计划Scheduling(uartz)。 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> </dependency> (b)注入缓存 在com.kfit.config.shiro.ShiroConfiguration中加入如下方法: /** * shiro缓存管理器; * 需要注入对应的其它的实体类中: * 1、安全管理器:securityManager *

spring boot & shiro

孤者浪人 提交于 2020-02-04 16:38:44
首先pom依赖 <!-- shiro核心包--> <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-spring</artifactId> <version>1.2.3</version> </dependency> <!-- shiro 引入缓存--> <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-ehcache</artifactId> <version>1.2.3</version> </dependency> <!-- shiro标签,,thymeleaf支持shrio标签需要额外引用这个包--> <dependency> <groupId>com.github.theborakompanioni</groupId> <artifactId>thymeleaf-extras-shiro</artifactId> <version>1.2.1</version> </dependency> 1.初步的拦截; 首先定义一个shiroconfig,,还有Realm,用于身份信息权限信息的验证。 ShiroConfig //首先定义shiro过滤器工厂类 @Bean public

Shiro自动登录

允我心安 提交于 2020-02-03 13:47:52
第一步 :配置spring.xml,配置cookieRememberMeManager <!--创建SecurityManager对象--> < bean id = " securityManager " class = " org.apache.shiro.web.mgt.DefaultWebSecurityManager " > < property name = " realm " ref = " userRealm " /> < property name = " sessionManager " ref = " sessionManager " /> < property name = " cacheManager " ref = " cacheManager " /> < property name = " rememberMeManager " ref = " cookieRememberMeManager " /> </ bean > < bean id = " cookieRememberMeManager " class = " org.apache.shiro.web.mgt.CookieRememberMeManager " > < property name = " cookie " ref = " cookie " /> </ bean > < bean