首页 > 其他分享 >shiro框架

shiro框架

时间:2023-03-19 20:23:44浏览次数:34  
标签:框架 用户 Session Cookie shiro Shiro HttpSession

核心概念:Subject,SecurtiyManager,Realms

Subject:正在与软件交互的事物(可以是人,可以是第三方进程等等)

SecurityManager:管理所有所有用户相关安全的操作,如果是web应用会设置Shiro Servlet Filer 通过xml的格式,这样可以设置Security Manager 实例。若果是集群,需要用其他方式。

Realms:在Shiro与应用的安全数据之间作为桥梁或者连接者。在配置Realms时,至少配置一个Realm,多个Real的配置是被允许的。

功能:

Authentication: 确认用户身份的过程,一般与登陆相关。一般分为三步:收集用户认证信息,称为"principals",收集支撑其身份的证据,称为"credientals";提交第一步的两种信息给系统;如果系统认为二者相匹配,则认证过程成功,不匹配则认为无法认证。

Authorization: 决定用户能做些什么,能访问应用中的哪些地方,比如资源、网页。shiro允许运行时删除和创建新的角色(如果镶嵌在代码中是会破坏程序的)。和认证一样,调用最终会到达SecuriotyManager去管理。大部分安全框架到这就结束了,但是shiro框架提供了更多的功能。

Session Management:shiro独有的区别于其他的安全框架,提供了session api在任何应用和架构层次中。最重要的好处之一是独立于容器的。shiro框架提供了一种可插入的会话数据存储,这意味着你只需要配置会话组一次就可以应用在不同的部署环境中。Shiro会话的另一个好处是,如果需要的话,会话数据可以在客户技术之间共享。

 

(HttpSession:当用户访问网站时,服务器会创建一个会话(Session),并为该会话分配一个唯一的标识符(Session ID)。Session ID将被发送到用户的浏览器,存储在Cookie中或者在URL的查询参数中。

HttpSession是Java Servlet技术中的一个接口,它提供了一种在多个请求之间存储和检索数据的方式。在一个会话期间,HttpSession对象允许你存储和获取数据,这些数据可以在同一个会话的不同请求中使用。

HttpSession对象的工作原理是这样的:当用户第一次请求网站时,服务器会为该用户创建一个HttpSession对象,然后将Session ID发送给用户的浏览器。在随后的请求中,浏览器将Session ID发送回服务器,服务器可以根据Session ID找到相应的HttpSession对象,从而在请求之间共享数据。

通过HttpSession,你可以在一个会话期间存储和获取用户数据,例如用户登录信息、购物车信息等。在Web应用程序中,HttpSession是非常有用的,因为它允许你在多个请求之间保持数据的一致性。)

(Cookie是一种在Web浏览器和Web服务器之间传递数据的机制。它是在浏览器端存储数据的一小段文本信息,用于跟踪用户的访问和存储用户的偏好设置。

当用户首次访问一个网站时,服务器会在响应中设置一个或多个Cookie,将这些Cookie发送到用户的浏览器。浏览器会将Cookie存储在本地,并在后续请求中将它们发送回服务器。

Cookie通常用于实现以下功能:

  1. 会话管理:用于在用户访问同一站点的不同页面时保持用户的状态。

  2. 个性化设置:例如用户界面的语言、字体大小等。

  3. 跟踪用户行为:例如记录用户浏览历史、购物车内容等。

Cookie有一些限制,例如每个Cookie的大小通常不能超过4KB,并且浏览器有可能禁用Cookie或限制Cookie的数量。此外,Cookie还存在一些安全风险,例如Cookie劫持和跨站脚本攻击(XSS)等问题。因此,开发人员需要注意如何使用Cookie,并采取一些安全措施来保护用户的隐私和安全。

cryptography:密码学是隐藏或混淆数据的过程,以便窥探者无法了解它。Shiro在密码学方面的目标是简化JDK的密码学支持并使之可用。

虚拟机级别的问题。Apache Shiro目前没有处理虚拟机级别的安全问题,例如根据访问控制策略防止某些类在类加载器中加载的能力。然而,Shiro可以与现有的JVM安全操作集成,这并非不可想象--只是没有人向该项目贡献这样的工作而已。
多阶段认证。Shiro目前并不支持 "多阶段 "认证,即用户可能通过一种机制登录,然后被要求用另一种机制再次登录。然而,在基于Shiro的应用程序中,通过应用程序预先收集所有需要的信息,然后与Shiro进行交互,已经实现了这一点。在未来的Shiro版本中,确实有可能支持这一功能。
Realm写操作。目前,所有的Realm实现都支持'读'操作,用于获取认证和授权数据,以执行登录和访问控制。不支持 "写 "操作,如创建用户账户、组和角色,或将用户与角色组和权限相关联。这是因为支持这些操作的数据模型在不同的应用中差异很大,而且很难对所有Shiro用户实施 "写 "的API。

因为shiro常用于JSP开发,目前大多采用前后端分离技术,因此需要讲shiro与对应后端框架集成,因此不记录JSP相关语法,同时Session的控制认证也要转化为对JWT的管理,需要改写shiro的方法。

标签:框架,用户,Session,Cookie,shiro,Shiro,HttpSession
From: https://www.cnblogs.com/WZXwzx/p/17232458.html

相关文章

  • 不使用spring boot等框架搭建servlet
    使用JavaSE搭建javaweb项目访问数据库,比并将数据库的内容打印到浏览器页面上。只用javaSE,tomcat,jdbc工具jdk1.8tomcat8.5MySQL5.7mysqljar5.1.48第一步:创建空......
  • Spring框架学习
    只有到找工作的时候才想得起来写博客的warobot是屑...以下内容整理自w3school: Spring三层架构web表现层service业务层dao持久层 Spring的优良特性......
  • golang gin框架
    gin:一个快速的httpwebframework,基于httprouter封装的,包含了日志处理、错误返回、验证处理、数据格式返回、文件上传、websocket支持、clientip支持、cookie支持。服务入口......
  • 在 Java 中使用集合框架
    一.什么是集合框架集合框架的概述Java中的集合框架是一组用于管理和操作对象集合的类和接口,它们提供了比数组更高级别的数据结构和算法,以及更方便的数据访问和操作方式。Ja......
  • flask框架,查询某个目录下文件列表,目录列表,查询是否存在某个文件
    #要查询的目录directory='/path/to/directory'#获取目录下的所有文件和目录contents=os.listdir(directory)#筛选出所有的文件files=[......
  • 【MyBatis框架】mybatis和spring整合
    spring和mybatis整合1.整合思路需要spring通过单例方式管理SqlSessionFactory。spring和mybatis整合生成代理对象,使用SqlSessionFactory创建Sql......
  • 【MyBatis框架】查询缓存-一级缓存原理
    查询缓存1.什么是查询缓存mybatis提供查询缓存,用于减轻数据压力,提高数据库性能。mybaits提供一级缓存,和二级缓存。缓存模式图如图一级缓存是......
  • 【MyBatis框架】高级映射-多对多查询
    多对多查询1.需求查询用户及用户购买商品信息。2.sql语句查询主表是:用户表关联表:由于用户和商品没有直接关联,通过订单和订单明细进行关联,所......
  • 【hibernate框架】缓存机制之二级缓存
    二级缓存是sessionFactory级别的缓存,可以跨越session存在。hibernate文档里关于二级缓存的说明:二级缓存(TheSecondLevelCache)hibernate支持......
  • 【hibernate框架】缓存机制之一级缓存
    什么是缓存:我们在内存中开辟一块空间,把本来应该存储在硬盘上的东西,然后给它放在内存里,将来要读的时候从内存中读,这个部分就叫做缓存。在hibernate......