shiro

Shiro登录拦截器解析(七)

自作多情 提交于 2020-01-26 15:29:05
authc 登录拦截器工作原理 authc 拦截器有 2 个作用: 1> 登录认证 请求进来时,拦截并判断当前用户是否登录了,如果已经登录了放行, 如果没有登录,跳转到 authc.loginUrl 属性配置的路径,注意:默认是 /login.jsp 2> 执行登录认证 请求进来时,如果请求的路径为 authc.loginUrl 属性配置的路径(没配置,默认是 /login.jsp )时,如果当前用户没有登录, authc 这个拦截器会尝试获取请求中的账号跟密码值,然后比对 ini 配置文件或者 realm 中的用户列表,如果比对正确,直接执行登录操作,反之,抛异常,跳转到 authc.loginUrl 指定的路径。 注意:请求中账号与密码必须固定为 username 跟 password(即前端的name字段), 如果需要改动必须额外指定,authc. usernameParam =xxx authc.passwordParam=xxxx authc 登录成功之后处理逻辑 : 注意:登陆成功后要么跳转到已保存路径,要么跳转到/根路径(而不是authc.loginUrl=/login中) authc 登录失败之后处理逻辑 : 以前的做法需要验证登录信息(即匹配账号密码是否正确),现在验证已经交由shiro验证,这里只需要处理错误逻辑就可以了 @WebServlet(name =

springboot整合shiro

走远了吗. 提交于 2020-01-25 18:08:20
前言 springboot的配置和ssm的配置有所区别,但是它们本质上又是一样的。shiro的整合也是如此,虽然配置方式不一样,一个人xml中一个在java代码中,但是他们的流程还是差不多的,都是先配置凭证器->自定义realm->安全管理器->过滤器链等。所以在这篇博客中,我将参考前两天写的 ssm整合shiro 来进行springboot整合shiro的配置。 springboot基本配置 ----- 整合mybatis pom.xml如下 <?xml version="1.0" encoding="UTF-8"?> < project xmlns = " http://maven.apache.org/POM/4.0.0 " xmlns: xsi = " http://www.w3.org/2001/XMLSchema-instance " xsi: schemaLocation = " http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd " > < modelVersion > 4.0.0 </ modelVersion > < parent > < groupId > org.springframework.boot </ groupId > < artifactId

SpringShiro认证源码详解

橙三吉。 提交于 2020-01-25 05:20:50
Authentication 认证 认证(Authentication):身份验证的过程,也就是证明一个用户的真实身份。为了证明用户身份,需要提供系统理解和相信的身份信息和证据。 需要通过向 Shiro 提供用户的身份(principals)和证明(credentials )来判定是否和系统所要求的匹配。 Principals(身份) 是Subject的“标识属性”,可以是任何与Subject相关的标识,比如说名称(给定名称)、名字(姓或者昵称)、用户名、安全号码等等,当然像昵称这样的内容不能很好的对Subject进行独特标识,所以最好的身份信息(Principals)是使用在程序中唯一的标识–典型的使用用户名或邮件地址。 Primary Principals(主要身份) 虽然Shiro允许用户可以使用多个身份,但是还是希望用户能有一个精准表明用户的身份, 一个仅有的唯一标识 Subject 值 。在多数程序中经常会是一个用户名、邮件地址或者全局唯一的用户 ID。 Credentials(证明) 通常是只有Subject自己才知道的机密内容,用来证明Subject真正拥有所需的身份。一些简单的证书例子如密码、指纹、眼底扫描和X.509证书等。 最常见的身份/证明是用户名和密码,用户名是所需的身份说明,密码是证明身份的证据。如果一个提交的密码和系统要求的一致,程序就认为该用户身份正确

SasSHRM中基于shiro的认证授权:系统微服务配置shiro

家住魔仙堡 提交于 2020-01-25 03:03:08
#服务配置 server: port: 9002 #spring配置 spring: #1.应用配置 application: name: ihrm-system #指定服务名 #2.数据库连接池 datasource: driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://localhost:3306/ihrm?useUnicode=true&characterEncoding=utf8 username: root password: 111111 #3.JPA jpa: database: MySQL show-sql: true open-in-view: true redis: host: localhost port: 9999 password: 123456 jwt: config: key: saas-ihrm ttl: 3600000 package com.learn.system; import com.learn.common.shiro.realm.IhrmRealm; import com.learn.common.shiro.session.CustomSessionManager; import com.learn.system.shiro.realm.UserRealm;

How to configure data grid ttl in Payara 5.193

女生的网名这么多〃 提交于 2020-01-24 23:58:00
问题 Previously, with Payara 4, we used Hazelcast cluster/data grid. We configured cluster discovery and the ttl for Shiro authenticationCache grid map entries, in a file called hazelcast-config.xml: <?xml version="1.0" encoding="UTF-8"?><hazelcast xmlns="http://www.hazelcast.com/schema/config" xmlns:xsi="http://www.w3.org/2 001/XMLSchema-instance" xsi:schemaLocation="http://www.hazelcast.com/schema/config hazelcast-config-3.5.xsd"> <properties/> <group> <name>prod</name> <password>pass</password>

Session(数据)共享的前后端分离Shiro实战

半腔热情 提交于 2020-01-22 19:04:29
1,前言 本文期望描述如何使用Shiro构建基本的安全登录和权限验证。本文实战场景有如下特殊需求:1,在集群和分布式环境实现session共享;2,前端只使用HTML/CSS/JS。因此无法直接使用Shiro提供的SessionManager,以及Shiro针对web应用提供的Filter拦截方式。当然,除非是一定要通过共享缓存的方式共享session,否则还是使用Shiro默认的session管理,毕竟增加独立缓存就意味着维护成本的提高和可用性的下降。 2, Shiro架构 首先一睹官方给出的Shiro架构图,如图1所示。刨除最右侧的加密工具类,主要围绕SercurityManager来阐述。SercurityManager是Shiro安全框架里的顶层安全管理中心,所有安全控制相关逻辑都是在SercurityManager里面通过delegate的方式,调用到真正的动作执行者。从图1可以清楚看到主要管理的组件:authentication管理,authorization管理,session管理,session缓存管理,cache管理,realms管理。(本文不想重复已有的文字,想要更好的了解Shiro,详见官方推荐的Shiro full intro: https://www.infoq.com/articles/apache-shiro ) 1

ssm整合shiro过程中 @RequiresPermissions等shiro的注解不生效解决办法

女生的网名这么多〃 提交于 2020-01-22 18:51:10
前言 shiro内置了几个注解,比如最常用之一的 @RequiresPermissions,这个注解可以规定哪些用户可以访问哪些接口。 但是好多小伙伴在controller层里使用shiro注解的时候,发现这些注解并没有生效,关于这个问题在这篇博客中会有所讲述。 正文 在 上一篇博客 中所配置的项目中,使用qiu这个用户登录,如下图可以得知,qiu这个用户他有三个权限功能。 在controller层接口上添加一个@RequiresPermissions,它的值就填一个qiu所不拥有的权限 @RequiresPermissions ( "user:export" ) @RequestMapping ( "export" ) @ResponseBody public String export ( ) { return "i have export permission" ; } 那么运行项目后发现照样还是可以访问到路径为export的接口,如下图所示 对于上述这个问题并不是shiro出现了bug,而是需要配置一些东西。 1、扫描shiro的注解 的确,没看错,它不具备自动生效,需要手动去配置扫描注解 ,该配置不配置在applicationContext.xml中,具体原因已经在注释中说明,请耐心看下去 <!--启动shiro注解功能,因为shiro的注解都在controller层中

springboot整合shiro登录MD5加密详细使用

北慕城南 提交于 2020-01-22 01:32:26
2、shiro需要引用的jar包 @Configuration public class ShiroConfig { /** * 配置加密方式 * @return */ @Bean //用来声明bean 相当于在spring配置文件中配置<bean>标签 HashedCredentialsMatcher credentialsMatcher ( ) { HashedCredentialsMatcher matcher = new HashedCredentialsMatcher ( ) ; //设置属性值 //设置加密算法 matcher . setHashAlgorithmName ( "MD5" ) ; //设置加密次数 matcher . setHashIterations ( 1024 ) ; return matcher ; } //配置Realm @Bean MyRealm myRealm ( ) { MyRealm myRealm = new MyRealm ( ) ; //设置加密方式 myRealm . setCredentialsMatcher ( credentialsMatcher ( ) ) ; return myRealm ; } //配置安全管理器 @Bean DefaultWebSecurityManager securityManager ( )

shiro中SSL

一笑奈何 提交于 2020-01-21 23:33:48
对于SSL的支持,Shiro只是判断当前url是否需要SSL登录,如果需要自动重定向到https进行访问。 首先生成数字证书,生成证书到D:\localhost.keystore 使用JDK的keytool命令,生成证书(包含证书/公钥/私钥)到D:\localhost.keystore: keytool -genkey -keystore "D:\localhost.keystore" -alias localhost -keyalg RSA 输入密钥库口令: 再次输入新口令: 您的名字与姓氏是什么? [Unknown]: localhost 您的组织单位名称是什么? [Unknown]: sisfdhuok.com 您的组织名称是什么? [Unknown]: sishufdsok.com 您所在的城市或区域名称是什么? [Unknown]: beijing 您所在的省/市/自治区名称是什么? [Unknown]: beijing 该单位的双字母国家/地区代码是什么? [Unknown]: cn CN=localhost, OU=sishfdsuok.com, O=sishfdsuok.com, L=beijing, ST=beijing, C=cn是否正确 ? [否]: y 输入 <localhost> 的密钥口令 (如果和密钥库口令相同, 按回车): 再次输入新口令: