SSH学习笔记1Shiro入门

合集下载

shiro入门教程

shiro入门教程

一、介绍:shiro是apache提供的强大而灵活的开源安全框架,它主要用来处理身份认证,授权,企业会话管理和加密。

shiro功能:用户验证、用户执行访问权限控制、在任何环境下使用session API,如cs程序。

可以使用多数据源如同时使用oracle、mysql。

单点登录(sso)支持。

remember me服务。

详细介绍还请看官网的使用手册:/reference.html与spring security区别,个人觉得二者的主要区别是:1、shiro灵活性强,易学易扩展。

同时,不仅可以在web中使用,可以工作在任务环境内中。

2、acegi灵活性较差,比较难懂,同时与spring整合性好。

如果对权限要求比较高的项目,个人建议使用shiro,主要原因是可以很容易按业务需求进行扩展。

附件是对与shiro集成的jar整合及源码。

二、shiro与spring集成shiro默认的配置,主要是加载ini文件进行初始化工作,具体配置,还请看官网的使用手册(/web.html)init文件不支持与spring的集成。

此处主要是如何与spring及springmvc集成。

1、web.xml中配置shiro过滤器,web.xml中的配置类使用了spring的过滤代理类来完成。

Xml代码2、在spring中的application.xml文件中添加shiro配置:Java代码anon org.apache.shiro.web.filter.authc.AnonymousFilterauthc org.apache.shiro.web.filter.authc.FormAuthenticatio nFilterauthcBasic org.apache.shiro.web.filter.authc.BasicHttpAuthenti cationFilterlogout org.apache.shiro.web.filter.authc.LogoutFilternoSessionCrea tion org.apache.shiro.web.filter.session.NoSessionCreati onFilterperms org.apache.shiro.web.filter.authz.PermissionsAuthor izationFilterport org.apache.shiro.web.filter.authz.PortFilterrest org.apache.shiro.web.filter.authz.HttpMethodPermiss ionFilterroles org.apache.shiro.web.filter.authz.RolesAuthorizatio nFilterssl org.apache.shiro.web.filter.authz.SslFilter user erFilter∙∙anon:例子/admins/**=anon 没有参数,表示可以匿名使用。

shiro课堂笔记一

shiro课堂笔记一

shiro第一天基于url权限管理shiro基础1权限管理原理知识1.1什么是权限管理只要有用户参与的系统一般都要有权限管理,权限管理实现对用户访问系统的控制,按照安全规则或者安全策略控制用户可以访问而且只能访问自己被授权的资源。

权限管理包括用户认证和授权两部分。

1.2用户认证1.2.1概念用户认证,用户去访问系统,系统要验证用户身份的合法性。

最常用的用户身份验证的方法:1、用户名密码方式、2、指纹打卡机、3、基于证书验证方法。

系统验证用户身份合法,用户方可访问系统的资源。

1.2.2用户认证流程1.2.3关键对象subject:主体,理解为用户,可能是程序,都要去访问系统的资源,系统需要对subject进行身份认证。

principal:身份信息,通常是唯一的,一个主体还有多个身份信息,但是都有一个主身份信息(primary principal)credential:凭证信息,可以是密码、证书、指纹。

总结:主体在进行身份认证时需要提供身份信息和凭证信息。

1.3用户授权1.3.1概念用户授权,简单理解为访问控制,在用户认证通过后,系统对用户访问资源进行控制,用户具有资源的访问权限方可访问。

1.3.2授权流程1.3.3关键对象授权的过程理解为:who对what(which)进行how操作。

who:主体即subject,subject在认证通过后系统进行访问控制。

what(which):资源(Resource),subject必须具备资源的访问权限才可访问该资源。

资源比如:系统用户列表页面、商品修改菜单、商品id为001的商品信息。

资源分为资源类型和资源实例:系统的用户信息就是资源类型,相当于java类。

系统中id为001的用户就是资源实例,相当于new的java对象。

how:权限/许可(permission) ,针对资源的权限或许可,subject具有permission访问资源,如何访问/操作需要定义permission,权限比如:用户添加、用户修改、商品删除。

Shiro权限管理框架(一):Shiro的基本使用

Shiro权限管理框架(一):Shiro的基本使用

Shiro权限管理框架(⼀):Shiro的基本使⽤shiro概念:Apache Shiro是⼀个强⼤且易⽤的Java安全框架,执⾏⾝份验证、授权、密码和会话管理。

使⽤Shiro的易于理解的API,您可以快速、轻松地获得任何应⽤程序,从最⼩的移动应⽤程序到最⼤的⽹络和企业应⽤程序。

上⾯这段话来⾃百度百科,没啥⽤。

想要快速理解并使⽤Shiro要先从最重要的三⼤概念⼊⼿。

1. Subject:⼤⽩话来讲就是⽤户(当然并不⼀定是⽤户,也可以指和当前应⽤交互的任何对象),我们在进⾏授权鉴权的所有操作都是围绕Subject(⽤户)展开的,在当前应⽤的任何地⽅都可以通过SecurityUtils的静态⽅法getSubject()轻松的拿到当前认证(登录)的⽤户。

2. SecurityManager:安全管理器,Shiro中最核⼼的组件,它管理着当前应⽤中所有的安全操作,包括Subject(⽤户),我们围绕Subject展开的所有操作都需要与SecurityManager进⾏交互。

可以理解为SpringMVC中的前端控制器。

3. Realms:字⾯意思为领域,Shiro在进⾏权限操作时,需要从Realms中获取安全数据,也就是⽤户以及⽤户的⾓⾊和权限。

配置Shiro,我们⾄少需要配置⼀个Realms,⽤于⽤户的认证和授权。

通常我们的⾓⾊及权限信息都是存放在数据库中,所以Realms也可以算是⼀个权限相关的Dao层,SecurityManager在进⾏鉴权时会从Realms中获取权限信息。

这三个基本的概念简答理解后就可以开始配置和使⽤Shiro了,其实Shiro最基本的使⽤⾮常简单,加⼊依赖后只需要配置两个Bean,再继承⼀个抽象类实现两个⽅法即可。

基本使⽤:引⼊⼀个依赖新建⼀个基于Springboot的Web项⽬,引⼊Shiro依赖。

<!-- https:///artifact/org.apache.shiro/shiro-web --><dependency><groupId>org.apache.shiro</groupId><artifactId>shiro-spring</artifactId><version>1.4.0</version></dependency>配置两个Bean新建⼀个Shiro配置类,配置Shiro最为核⼼的安全管理器SecurityManager。

Shiro学习文档

Shiro学习文档

Shiro学习文档一、shiro入门●Apache Shiro 是一个强大易用的Java安全框架,提供了认证、授权、加密和会话管理等功能。

●Shiro的功能:认证:验证用户来核实他们的身份授权:对用户执行访问控制,如:判读用户是否被分配了一个确定的安全角色判读用户是否被允许做某事会话管理:在任何环境下使用Session API,即使没有Web或EJB容器。

加密:以更加简洁易用的方式使用加密的功能,保护或隐藏数据防止被偷窥Realms:聚集一个或多个用户安全数据的数据源,并作为一个单一的复合用户“视图”。

启用单点登录(SSO)功能。

为没有关联到登录的用户启用“Remember Me”服务。

●Shiro的四大部分——身份验证,授权,会话管理和加密Authentication:有时也简称为“登录”,这是证明用户是他们所说的他们是谁的行为。

Authorization:访问控制的过程,也就是绝对“谁”去访问“什么”。

Session Management:管理用户特定的会话,即使再非Web或EJB应用程序。

Cryptography:通过使用加密算法保持数据安全同时易于使用。

●Shiro提供的扩展功能:Web Support:主要针对web应用提供一些常用功能。

Caching:缓存可以使应用程序运行更有效率。

Testing:帮助我们进行测试相关功能。

“Run AS”:一个允许用户假设为另一个用户身份(如果允许)的功能,有时候在管理脚本很有用。

“Remember Me”:记住用户身份,提供类似购物车功能。

●Shiro的高层概览架构SubjectSubject实质上是一个当前执行用户的特定的安全“视图”。

Subject可以是一个人,也可以是代表第三方服务,或其他类似的任何东西——基本上是当前正与软件进行交互的任何东西。

所以Subject实例都被绑定到(且这是必须的)一个SecurityManager上。

当你与一个Subject交互时,那些交互作用转化为与SecurityManager交互的特定Subject的交互作用。

开源权限管理框架Shiro

开源权限管理框架Shiro

开源权限管理框架Shiro针对Shiro使用的入门级介绍,目的是快速开始使用。

阅读本文需要事先有eclipse、maven、spring、springmvc、web应用开发等基础知识。

一、Shiro基本概念:Apache Shiro(日语“堡垒(Castle)”的意思)是一个强大易用的Java 安全框架,提供了认证、授权、加密和会话管理功能,可为任何应用提供安全保障- 从命令行应用、移动应用到大型网络及企业应用。

Shiro为解决下列问题(我喜欢称它们为应用安全的四要素)提供了保护应用的API:认证- 用户身份识别,常被称为用户“登录”;授权- 访问控制;密码加密- 保护或隐藏数据防止被偷窥;会话管理- 每用户相关的时间敏感的状态。

Shiro还支持一些辅助特性,如Web应用安全、单元测试和多线程,它们的存在强化了上面提到的四个要素。

Shiro的基本功能如图:二、Shiro基本处理流程及一些主要概念如图:Shiro框架拦截到一个应用请求后,会为此请求建立一个Subject对象,本次Session没关闭时,Subject对象会一直存在,作为一个虚拟的user对象。

对此对象可以进行身份验证(Authentication)和权限验证(Authorization),这些处理将会提交给Shiro的SecurityManager 对象。

简单地理解,SecurityManager是一个总调度,负责接受不同的Subject对象的权限相关的处理请求。

而真正干活的是Realm对象,也就是说最后作身份验证和权限验证的是Realm针对Shiro使用的入门级介绍,目的是快速开始使用。

阅读本文需要事先有eclipse、maven、spring、springmvc、web应用开发等基础知识。

对象。

Shiro的Realm对象不提供用户信息和权限信息,这些信息是Shiro 的使用者要提供的,Realm中定义的各种验证方法和安全数据的容器,使用者是把自己的安全数据装进去。

shiro学习笔记

shiro学习笔记
@Test
publicvoHale Waihona Puke dcontextLoads() {
//创建SecurityManager工厂
Factory<SecurityManager>factory=newIniSecurityManagerFactory("classpath:shiro.ini");
//获取SecurityManager实例
SecurityManagersecurityManager=factory.getInstance();
//通过SecurityUtils将SecurityManager设置到运行环境中
SecurityUtils.setSecurityManager(securityManager);
//通过SecurityUtils获取subject主体
//认证
if(subject.isAuthenticated()) {
System.out.println("登录成功");
}
}catch(AuthenticationExceptione) {
e.printStackTrace();
System.out.println("用户名或密码错误");
}
//登出
subject.logout();
}
}
异常
DisabledAccountException:账户失效异常
ExpiredCredentialsException:尝试次数过多
UnknownAccountException:用户名不正确
IncorrectCredentialsException:凭据不正确

SSH个人笔记

SSH个人笔记

Spring整合Struts21.启动Spring容器在Web应用中创建Spring容器:直接在web.xml文件中配置创建Spring容器。

Spring提供了一个ContextLoaderListener,该监听器类实现了ServletContextListener接口。

该类可以作为Listener使用,它在创建时会自动查找WEB-INF/下的applicationContext.xml文件。

如果需要多个配置需要载入,则考虑使用<context-param…/>元素来确定配置文件的文件名。

ContextLoaderListener加载时,会查找名为contextConfigLocation的初始化参数。

在应用中获取ApplicationContext实例,可以通过以下代码获得://获取当前web应用的Spring容器WebApplicationContextctx = WebApplicationContextUtils.getWebApplicationContext(servletContext);2.MVC框架与Spring整合的思考采用工厂模式,将控制器与业务逻辑组件的实现分离,从而提供更好的解耦。

所有的业务逻辑组件的创建由工厂负责,业务逻辑组件的运行也由工厂负责,而控制器只需定位工厂实例即可。

如果系统采用Spring 框架,则Spring成为最大的工厂。

Spring负责业务逻辑组件的创建和生成,并可管理业务逻辑组件的生命周期。

为了让Action访问Spring的业务逻辑组件,有两种策略:Spring容器负责管理控制器Action,并利用依赖注入为控制器注入业务逻辑组件。

利用Spring的自动装配,Action将会自动从Spring容器中获取所需的业务逻辑组件。

Struts2整合Spring的插件:struts2-spring-plugin-..jarSpring整合Hibernate1.Spring提供的DAO支持DAO模式的核心思想是:所有数据库访问,都通过DAO组件完成,DAO组件封装了数据库的增、删、改等原子操作。

shiro 登录原理-定义说明解析

shiro 登录原理-定义说明解析

shiro 登录原理-概述说明以及解释1.引言1.1 概述Shiro是一个强大而灵活的Java安全框架,用于处理身份认证、授权、密码加密等安全相关的任务。

它提供了一个简单而直观的编程界面,使开发人员能够轻松地集成安全性到他们的应用程序中。

在当今互联网的时代,随着用户数量和敏感信息的增加,保护用户信息和确保系统的安全性变得尤为重要。

实施有效的身份验证和授权机制是确保系统安全的关键环节之一。

Shiro框架作为一种解决方案,致力于为Java应用程序提供可靠的安全性支持。

Shiro的设计理念是简单易用,同时又具备高度的灵活性和可扩展性。

无论是基本的用户名/密码认证,还是复杂的多因素认证,Shiro都能满足各种安全需求。

它支持多种认证机制,如表单登录、基本认证、证书认证等,同时还可以集成第三方身份提供者,如LDAP、Active Directory等。

在完成身份认证之后,Shiro还提供了授权机制,可以根据不同用户的权限对资源进行访问控制。

本文将重点介绍Shiro的登录认证过程和相关原理。

首先,我们会对Shiro框架本身进行简要的介绍,了解其主要特点和功能。

接着,我们将详细解析Shiro的登录认证流程,包括用户身份验证和授权过程。

最后,我们将总结Shiro登录原理的重要性,并展望其在应用和发展方面的前景。

通过本文的阅读,读者将会了解到Shiro框架在身份认证和授权方面的核心机制,以及如何在实际项目中应用Shiro来保护系统的安全性。

同时,读者也能够对Shiro的未来发展进行展望,进一步认识到其在安全领域中的重要性和潜力。

文章结构部分的内容如下:1.2 文章结构本文将分为三个主要部分,分别是引言、正文和结论。

引言部分将首先概述本文将要探讨的主题——shiro 登录原理,并介绍文章的结构和目的。

通过对引言的阅读,读者将对本文的内容有一个整体的了解。

正文部分将详细介绍shiro框架的基本概念和原理、shiro登录认证过程以及shiro登录原理解析。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

11
12
//将安全管理器对象绑定到 SecurityUtils工具类
13
SecurityUtils.setSecurityManager(securityManager);
14
15
16
// get the currently executing user:
17
//通过 SecurityUtils获取到Subject 实例:代表的是当前用户
33
//将用户名和密码封装到 UsernamePasswordToken(身份令牌)
34
UsernamePasswordToken token = new UsernamePasswordToken("root",
18
Subject currentUser = SecurityUtils.getSubject();
19
20
// Do some stuff with a Session (no need for a web or EJB
container!!!)
21
//模拟Session操作
22
Session session = currentUser.getSession();
1 @RequestMapping:请求映射的:将请求的路径和指定的方法进行关联(映射) 2 @GetMapping:get请求,@PostMapping:post请求,@PutMapping:put请
求,@DeleteMapping:delete请求 3 @ResponseBody:用在方法前面,将结果转换成json格式 4 @RequestBody:用在参数前面,只能将前端发过来的json格式字符串,转成java对象 5 @RequestParam:用在参数前面,等同于:request.getParameter("name") 6 7 @JsonFormat:将返回的json数据中的日期类型进行格式化处理 8 @DateTimeFormat:用在实体的日期类型的字段上,用来接收前面传过来的字符串类型的日期,
1-shiro入门
1 回顾
常用的注解: 1. 配置成Bean的注解,创建对象,用在类上面的
1 @Component :组件 配置成bean,可以被spring容器管理 2 @Repository :等同于@Component,常用在数据访问层的类上 3 @Service :等同于@Component,用在Service层上 4 @Controller:等同于@Component,用在控制器层上
2. 实现注入功能的,装配,用在属性上面
1 @Autowried:自动注入,默认按照类型注入,spring自带的 2 @Resource:自动注入,JSR-25规范中提供的,默认按照名字注入,如果名字找不到,再按照类型
注入 3 4 @Value :注入值,针对那些基本数据类型(int,char,double,boolean),String类型
5
6
7
public static void main(String[] args) {
ห้องสมุดไป่ตู้
8
//读取ini中的数据信息
9
Factory<SecurityManager> factory = new
IniSecurityManagerFactory("classpath:shiro.ini");
10
SecurityManager securityManager = factory.getInstance();
3.2 shiro
shiro是什么?
Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理。使用Shiro的 易于理解的API,您可以快速、轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用 程序 。
能做什么?
Authentication:认证:身份验证, 类比:登录,验证用户是否可以进入系统 Authorization:授权:判断已经登录的用户,是否具备某一种角色或者是权限, Cryptography:密码学,加密;数据库中的密码应该是密文,不应该是明文 Session Management:会话管理:shiro内部维护了一个Session,java工程或者是web工程都可以使 用。 Shiro以Shiro开发团队所谓的“应用程序安全性的四个基石”为目标-身份验证,授权,会话管理和密码 学:
领域:领域充当Shiro与应用程序的安全数据之间的“桥梁”或“连接器”。当真正需要与安全性相关的 数据(例如用户帐户)进行交互以执行身份验证(登录)和授权(访问控制)时,Shiro会从一个 或多个为应用程序配置的领域中查找许多此类内容。 从这个意义上说,领域本质上是特定于安全性的DAO:它封装了数据源的连接详细信息,并根据 需要使关联数据可用于Shiro。在配置Shiro时,您必须至少指定一个领域用于身份验证和/或授 权。所述 SecurityManager 可与多个境界被配置,但至少有一个是必需的。 Shiro提供了开箱即用的领域,可以连接到许多安全数据源(又名目录),例如LDAP,关系数据库 (JDBC),文本配置源(例如INI和属性文件)等。如果默认的Realms不能满足您的需求,那么您 可以插入自己的Realm实现以表示自定义数据源。 像其他内部组件一样,Shiro SecurityManager 管理着如何使用领域来获取要表示为 Subject 实 例的安全性和身份数据
行 7 @AfterThrowing:异常通知,目标方法发生异常后,该通知执行
4. SpringMVC常用注解 处理流程:前端发送请求---》前端控制器---》处理器映射器(HandlerMapping)--->处理器适配器--》调用某一个Controller中的方法---》返回ModelAndView ---->数据渲染---》视图解析----》返回
27
}
28
29
//模拟认证
30
// let's login the current user so we can check against roles and
permissions:
31
//判断当前用户是否已经认证
,如果没有认证
32
if (!currentUser.isAuthenticated()) {
3.3 创建第一个Shiro程序
1 步骤:
创建普通的java -maven项目
步骤1:引入jar包
1
<dependency>
2
<groupId>org.apache.shiro</groupId>
3
<artifactId>shiro-core</artifactId>
4
<version>1.3.2</version>
@Mapper注解使用:
2 学习目标
2.1 权限管理基础 2.2 shiro简介 认证 授权 加密 会话管理 2.3 基于shiro进行认证
3 学习内容
3.1 权限管理基础概念
用户:用来存储身份信息的,用户名和密码 角色: 业务中的职位:老板、CEO、助理、经理、干事 业务系统中:一系列的权限的集合 权限:对某种资源的操作,系统中指的是:菜单,地址,图片,... ; 操作:增 删 改 查 粗粒度权限控制:控制到某一个页面(菜单) 细粒度权限控制:控制到每一个操作上 关系:用户和角色 多对多,角色和权限:多对多关系
3. Aop注解
1 @Aspect:配置成切面,用在类上面 2 @Pointcut:切入点 ,用在方法前面 3 @Before:前置通知,目标方法执行之前执行,用在方法前面 4 @After:最后,最终通知,目标方法执行之后,不关是否发生异常,该通知都会执行 5 @Around:环绕通知,模拟之前,之后,异常处理。 6 @AfterReturning:正常返回通知,目标方法正常执行,该通知执行,一旦发生异常,通知不执
身份验证:有时称为“登录”,这是证明用户是他们所说的身份的行为。 授权:访问控制的过程,即确定“谁”有权访问“什么”。 会话管理:即使在非Web或EJB应用程序中,也可以管理用户特定的会话。 密码术:使用密码算法保持数据安全,同时仍然易于使用。 在不同的应用程序环境中,还具有其他功能来支持和加强这些问题,尤其是: Web支持:Shiro的Web支持API可帮助轻松保护Web应用程序的安全。 缓存:缓存是Apache Shiro API的第一层公民,可确保安全操作保持快速有效。 并发性:Apache Shiro的并发功能支持多线程应用程序。 测试:测试支持可以帮助您编写单元测试和集成测试,并确保您的代码将按预期进行保护。 “运行方式”:一种功能,允许用户采用其他用户的身份(如果允许),有时在管理方案中很有用。 “记住我”:在整个会话中记住用户的身份,因此他们只需要在必要时登录。
23
session.setAttribute("someKey", "aValue");
24
String value = (String) session.getAttribute("someKey");
25
if (value.equals("aValue")) {
26
("Retrieved the correct value! [" + value + "]");
转成Date类型 9 @Transactional:事务注解,用在业务层的类或者方法前面
能使用@Requestbody接数据的前提条件:
5. 配置相关的注解
相关文档
最新文档