shiro

UnavailableSecurityManagerException

风流意气都作罢 提交于 2020-04-13 11:52:56
【今日推荐】:为什么一到面试就懵逼!>>> 在springboot环境下报错: org.apache.shiro.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. shiro配置类中少了 SecurityUtils.setSecurityManager(defaultSecurityManager); 位置: /** * Shiro 安全管理器 * * @return */ @Bean public SecurityManager securityManager() { DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager(); SecurityUtils.setSecurityManager(securityManager); securityManager.setRealm(myShiroRealm())

细数Java项目中用过的配置文件(ini 篇)

跟風遠走 提交于 2020-04-10 09:47:10
Java 菜鸟,会把可变的配置信息写死在代码里;Java 老鸟,会把可变的配置信息提取到配置文件中。坊间流传这么一句非科学的衡量标准,来评判程序员的级别。 那么,项目中的配置信息,你平时都是怎样来实现的呢?你项目中用过哪些配置文件呢? 近期将结合实际项目或源码,说说这些年用过的那些有关配置的奇技淫巧,看看能否帮你提高研发能力(那怕是提高一丢丢,就算成功)。 1. 后缀为 .ini 的文件,你用过没? 后缀为 .ini 的文件,是 Initialization File 的缩写,主要用于程序的初始化的一些配置参数,后缀当然也可以是 .conf、.cfg,只是项目中习惯上用后缀 .ini 罢了。 简单介绍一下,一个 ini 配置文件主要由节(section)、键值对组成。 如上图所示,ini 文件中,配置参数都是以节(section)为单位组合在一起的,每个节名字都被方括号包围着,像 owner、database 都被方括号括着。而每个节声明后的键值对都属于该 section,而且一个 section 没有结束标识符,一个节的开始就是上一个节的结束。 2. 后缀为 .ini 的文件,怎么用啊? 在自研框架或者业务项目开发中,往往会配置一些项目启动时要初始化的一些参数信息,例如端口、域名等等。从老项目中截取一段,其实就配置键值对而已,很简单,有没有? 另外,项目研发中在面对身份验证、授权

shiro登录源码

这一生的挚爱 提交于 2020-04-06 19:08:13
//1、获取SecurityManager工厂,此处使用Ini配置文件初始化SecurityManager Factory<org.apache.shiro.mgt.SecurityManager> factory = new IniSecurityManagerFactory(configFile); //2、得到SecurityManager实例 并绑定给SecurityUtils org.apache.shiro.mgt.SecurityManager securityManager = factory.getInstance(); SecurityUtils.setSecurityManager(securityManager); SecurityUtils.setSecurityManager(securityManager)源码: * * *设置一个VM(静态)单例SecurityManager,专门用于透明使用 * {@link #getSubject() getSubject()}实现。 * < p / > * <b>此方法调用主要用于框架开发支持。应用程序开发人员很少, *如果需要,需要调用这个方法。</b> * < p / > Shiro开发团队更喜欢SecurityManager实例是非静态的单例应用程序 *和<em>不是</em> VM静态单例

阿里资深架构推荐:Apache Shiro安全框架详解

元气小坏坏 提交于 2020-04-06 04:54:15
引言 Apache Shiro是一个强大而灵活的开源安全框架,它干净利落地处理身份认证,授权,企业会话管理和加密。Apache Shiro的首要目标是易于使用和理解。安全有时候是很复杂的,甚至是痛苦的,但它没有必要这样。框架应该尽可能掩盖复杂的地方,露出一个干净而直观的API,来简化开发人员在使他们的应用程序安全上的努力。因为很多时候很多人比较喜欢使用Spring提供的Spring Security和Shiro来进行对比,我们也对比一下这个内容。Apache Shiro是Java的一个安全框架。目前,使用Apache Shiro的人越来越多,因为它相当简单,对比Spring Security,可能没有Spring Security做的功能强大,但是在实际工作时可能并不需要那么复杂的东西,所以使用小而简单的Shiro就足够了。 主页 目录 编码/加密: 与Web集成: 拦截器机制: 会话管理: 缓存机制: 与Spring集成: SSL: 综合实例: OAuth2集成: 多项目集中权限管理及分布式会话: 资料获取方法 点点这个链接免费获取: 【推荐】2020年最新Java电子书集合.pdf(吐血整理) >>> 来源: oschina 链接: https://my.oschina.net/u/4441013/blog/3215005

shiro 框架中得坑

我的未来我决定 提交于 2020-04-05 16:40:12
1.通过shiro 集成得有关权限接口 登陆接口必须用get 请求 因为通过过滤器添加过滤失败进入得请求配置得是登陆请求,而这个请求是以get形式请求得。 来源: oschina 链接: https://my.oschina.net/kuchawyz/blog/3216530

前后端分离 springboot整合shiro

偶尔善良 提交于 2020-04-01 02:20:36
实现前后端的跨域,我是在后端配置类里实现 创建配置类 WebMvcConfig import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.CorsRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; // 配置全局跨域 @Configuration public class WebMvcConfig implements WebMvcConfigurer { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") .allowedOrigins("http://localhost:8081") .allowedMethods("*") .allowedHeaders("*") .allowCredentials(true); } } Shiro的配置 创建配置类 ShiroConfig import cn.xej.util

Shiro入门示例

隐身守侯 提交于 2020-03-31 09:00:58
一、Shiro是用来做权限的。 二、权限 1.基本概念: (1)安全实体:要保护的数据。 (2)权限:是否有能力去操作(查看、修改、删除 )保护的数据。 2、权限的两个特性 (1)权限的继承性:A 包含 B,B无权限,但A有权限,此时B 的权限即为 A 的权限。如大厦里有公共厕所,进出大厦需要门禁,所以公共厕所的权限就是大厦的门禁权限。 (2)最近路劲匹配:如大厦某层有卫生间,要想到此卫生间需要有该层电梯权限,此时该卫生间的权限为该层电梯的权限,而不是大厦的门禁权限。 3.几个关键词 (1) 认证:验证用户身份,即验证登录的用户名密码是否正确,用户是否被锁死。 (2) 授权:决定是否有权限访问受保护的资源。 (3) 加密:保护或隐藏受保护的资源。 (4)会话管理 (5)单点登录(SSO) 三、Shiro 1.核心组件 (1)Subject:当前用户。 (2)Shiro SecurityManager:Shiro 大管家。 (3)Realm:用于访问数据库。 2.Shiro SecurityManager Shiro 的大管家管理着 Shiro 下的认证、授权、会话管理、缓存管理、以及 Realm 访问数据库,贯穿于始终的是加密。 3. 用户、角色、权限 (1)概念: 用户:通俗来讲,指的就是要登录的用户名密码。 角色:权限的集合。 权限:是否有能力去做某件事。 (2)关系

Shiro安全框架

那年仲夏 提交于 2020-03-31 08:59:31
Shiro简介 Apache Shiro是一个强大易用的Java安全框架,提供了认证、授权、加密和 会话管理等功能。 对于任何一个应用程序,Shiro都可以提供全面的安全管理服务。其不仅可 以用在JavaSE环境,也可以用在JavaEE环境。 二、Shiro架构图 1.从外部来看Shiro,即从应用程序角度来观察如何使用Shiro完成工作。如 下图: 2.从Shiro内部看Shiro的架构,如下图所示: Subject(org.apache.shiro.subject.Subject) 当前与软 件进行交互的实体(用户,第三方服务,cron job,等 等)的安全特定“视图” SecurityManager :SecurityManager 是 Shiro 架构的 心脏。它基本上是一个“保护伞”对象,协调其管理的组 件 以 确 保 它 们 能 够 一 起 顺 利 的 工 作 类 似 于SpringMVC中的入口 servlet Realms :域 Realms 在 Shiro 和你的应用程序的安全数据之间担当 “桥梁”或“连接器”。当它实际上与安全相关的数据如用 来执行身份验证(登录)及授权(访问控制)的用户帐户交互时, Shiro从一个或多个为应用程序配置的Real中寻找许多这样的东西 Shiro 的环境搭建 使用 shiro 实现登陆的操作 第一步 导包 第二步:书写

第四章:shiro的INI配置

心已入冬 提交于 2020-03-31 08:57:14
4.1 根对象SecurityManager 从之前的Shiro架构图可以看出,Shiro是从根对象SecurityManager进行身份验证和授权的;也就是所有操作都是自它开始的,这个对象是线程安全且真个应用只需要一个即可,因此Shiro提供了SecurityUtils让我们绑定它为全局的,方便后续操作。 因为Shiro的类都是POJO的,因此都很容易放到任何IoC容器管理。但是和一般的IoC容器的区别在于,Shiro从根对象securityManager开始导航;Shiro支持的依赖注入:public空参构造器对象的创建、setter依赖注入。 1、纯Java代码写法 DefaultSecurityManager securityManager = new DefaultSecurityManager(); //设置authenticator ModularRealmAuthenticator authenticator = new ModularRealmAuthenticator(); authenticator.setAuthenticationStrategy(new AtLeastOneSuccessfulStrategy()); securityManager.setAuthenticator(authenticator); //设置authorizer

spring mvc下shiro的session,request等问题

做~自己de王妃 提交于 2020-03-31 08:03:04
最近的一个项目使用的是spring mvc,权限框架使用的是shiro. 不过有一个问题一直困扰着我,现在的session到底是谁的session,是servlet的还是shiro的. 于是我把spring controller参数里面的HttpServletRequest对象和HttpSession对象打印了出来 这两个对象打印的结果是org.apache.shiro.web.servlet.ShiroHttpServletRequest和org.apache.shiro.web.servlet.ShiroHttpSession 在不使用shiro时这些对象应该均为tomcat所实现的类,这说明在shiro执行filter时将request对象包装成了shiro实现的类. 那么shiro是在什么时候将request对象包装了的呢? 先看一下shiro的拦截器类图: ShiroFilter 是整个 Shiro 的入口点,用于拦截需要安全控制的请求进行处理。ShiroFilter 继承自AbstractShiroFilter,而AbstractShiroFilter继承自OncePerRequestFilter 先看一下OncePerRequestFilter的源码 : public abstract class OncePerRequestFilter extends