微服务概述-7

Shiro 框架

Shiro 是一个用于 Java 应用程序的安全框架。它提供了身份验证、授权、加密和会话管理等功能,可以帮助开发人员构建安全可靠的应用程序。

Java 中针对权限管理常见的有 2 个著名的框架:spring security 和 shiro

shiro 基本概念

  • credentials 资格证书

  • Principal 当事人

  • Authentication 认证

  • Authorization 授权

Shiro 工作原理

Shiro 的工作原理主要包括身份验证和授权两个方面。

在身份验证方面,Shiro 提供了一种简单的方式来验证用户的身份。它可以通过用户名和密码、轻量目录访问协议 LDAP、OAuth 等多种方式进行身份验证。当用户提供身份凭证后,Shiro 会验证凭证的有效性,并返回验证结果。

在授权方面,Shiro 提供了一种灵活的授权机制。开发人员可以定义角色和权限,并将其与用户关联起来。当用户尝试进行某个操作时,Shiro 会根据用户的角色和权限来判断是否允许该操作。

Shiro 还提供了会话管理功能,可以跟踪和管理用户的会话状态。它支持将会话信息存储在内存、数据库或其他存储介质中,并提供了一些常见的会话管理操作,如创建、销毁、过期等。

总的来说,Shiro 的工作原理是通过身份验证来确认用户的身份,并通过授权机制来管理用户的角色和权限,从而确保应用程序的安全性和可靠性。

身份认证是判断一个用户是否为合法用户的处理过程。最常用的简单身份认证方式是系统通过核对用户输入的用户名和口令,看其是否与系统中存储的该用户的用户名和口令一致,来判断用户身份是否正确。对于采用指纹等系统,则出示指纹;对于硬件 Key 等刷卡系统,则需要刷卡。

在这里插入图片描述

授权就是访问控制,控制谁能访问哪些资源。主体进行身份认证后需要分配权限方可访问系统的资源,对于某些资源没有权限是无法访问的

在这里插入图片描述

shiro 运行时异常

  • AuthenticationException 异常是 Shiro 在登录认证过程中,认证失败需要抛出的异常

  • CredentitalsException 凭证异常

  • IncorrectCredentialsException 不正确的凭证

  • ExpiredCredentialsException 凭证过期

  • AccountException 账号异常

  • ConcurrentAccessException 并发访问异常(多个用户同时登录时抛出)

  • UnknownAccountException 未知的账号

  • ExcessiveAttemptsException 认证次数超过限制

  • DisabledAccountException 禁用的账号

  • LockedAccountException 账号被锁定

  • pportedTokenException 使用了不支持的 Token

  • AuthorizationException 鉴权操作异常

  • UnauthorizedException: 抛出以指示请求的操作或对请求的资源的访问是不允许的

  • UnanthenticatedException:当尚未完成成功认证时,尝试执行授权操作时引发异常

shiro 核心组件

  • Authentication 身份认证/登录,验证用户是不是拥有相应的身份。

  • Authorization 授权,即权限验证,验证某个已认证的用户是否拥有某个权限;即判断用户是否能做事情,常见的如:验证某个用户是否拥有某个角色。或者细粒度的验证某个用户对某个资源是否具有某个权限。

  • SessionManagement 对用户的会话信息进行管理,使 Session 不再仅限于 JavaEE 应用,同时扩展了 Session数据的存储途径及缓存方式,更易于实现 Session 数据的集群共享

  • Cryptography 加密,保护数据的安全性,以简洁的 API 提供常用的加密算法和数据摘要算法。

在这里插入图片描述

shiro 选用:

1、使用 shiro 可以非常快速的完成认证、授权等功能的开发,降低系统成本

2、较之 SpringSecurity,Shiro 在保持强大功能的同时,在简单性和灵活性方面拥有较为明显的优势

Kaptcha

Kaptcha 是一个用于生成和验证验证码的 Java 库,提供了丰富的生成和验证功能,并支持自定义配置。它可以用于增加应用程序的安全性,防止机器人和恶意攻击。

Kaptcha 可以生成各种类型的验证码,包括数字、字母、数字字母组合等。生成的验证码图片可以以图片流或Base64 编码的形式输出,方便在 Web 应用程序中使用。

在验证码验证方面,Kaptcha 提供了验证器接口,可以用于验证用户输入的验证码是否正确。开发人员可以根据需要自定义验证逻辑,以满足特定的业务需求。

Cookie 的使用

Cookie 是一种在 Web 开发中使用客户端数据存储实现跟踪用户状态的机制。所谓的跟踪用户是指记录用户操作信息并隔离不同用户数据访问的方法,常见的用户跟踪方法有隐藏域、URL 重写、客户端跟踪用户 Cookie

和服务器端跟踪用户 Session 四种不同方式。

理论上来说关于 cookie 的大小实际上没有明确的限制。Cookie 是由网站在用户浏览器中存储的小型文本文件,用于跟踪用户的活动和提供个性化的服务。然而浏览器对于每个域名和每个 cookie 的大小都有一些限制。大多数现代浏览器对于单个 cookie 的大小限制在 4KB 到 10KB 之间,例如 chrome 的限制就是 4KB。同时每个域名在浏览器中可以存储的 cookie 数量也有一定限制,一般在几十到几百个之间。

需要注意的是,这些限制可能因不同的浏览器和版本而有所不同。此外虽然 cookie 的大小限制较小,但网站可以通过将数据存储在服务器上,并在 cookie 中使用标识符来处理更大量的数据。 总的来说,虽然 cookie的大小有一定限制,但对于大多数常见的用途和数据跟踪来说,这些限制通常是足够的。如果有特定的需求,可能需要考虑其他的数据存储方式。

setMaxAge(int expiry) 正值表示 cookie 将在经过该值表示的秒数后过期,负值意味着 cookie 不会被持久存储,将在 Web 浏览器退出时删除,默认是-1,0 值表示马上删除 cookie。

setPath(String)指定路径下的请求才会传递该 cookie 数据Cookie 中的中文乱码可以使用 URLDecoder.decode(value,“UTF-8”)解决

Session 的使用

Session 是一种在 Web 开发中用于跟踪用户状态的机制。它通过在服务器上存储用户数据,并为每个用户分配一个唯一的标识符来实现。 在使用 Session 时,服务器会为每个用户创建一个唯一的 Session ID,并将该 ID

存储在用户的浏览器中的 Cookie 中。当用户发送请求时,服务器会根据 Session ID 来检索和存储与该用户相关的数据。这使得服务器能够跟踪用户的状态和信息,例如登录状态、购物车内容等。Session 的使用有四方面需要注意:

  1. 安全性:由于 Session ID 存储在用户的 Cookie 中,需要采取适当的安全措施来保护 Session 数据。这包括

使用加密传输、限制 Session ID 的有效期等。

  1. 存储容量:Session 数据存储在服务器上,因此需要考虑服务器的存储容量和性能。过多或过大的 Session数据可能会对服务器造成压力。
  2. 生命周期:Session 可以有不同的生命周期设置,例如在用户关闭浏览器后立即过期,或者在一定时间段内保持活动状态。开发人员需要根据应用需求来配置 Session 的生命周期。
  3. 分布式环境:在分布式环境中,需要确保 Session 数据在不同服务器之间的共享和同步,以便用户在不同服务器间切换时能够保持会话状态。

server.servlet.session.timeout=30m 表示 Session 将在 30 分钟后超时

SpringSession

在传统单机 web 应用中,用户的 session 都是由容器管理。浏览器使用 cookie 中记录 sessionId,容器根据sessionId 判断用户是否存在会话 session。限制是 session 存储在 web 容器中,被单台服务器容器管理。如果需要实现 session 共享的方式有 5 种:1、通过 nginx 的 ip_hash 负载均衡策略根据 ip 将请求分配到对应的服务器。2、基于关系型数据库存储共享数据。3、基于 cookie 客户端数据存储。4、某些服务器内置的有 session

复制域功能。5、可以基于 NoSQL 数据库系统实现

Spring Session 是一个用于在分布式环境中管理和跟踪用户会话的框架。它提供了多种用户会话存储的实现方式,支持会话共享和跨域请求,具有良好的扩展性和自定义能力。主要是依赖于 SessionRepositoryFilter 实现,它就是Servlet 规范中 Filter 的实现,用来切换HttpSession 至Spring Session,重新定义包装 HttpServletRequest和 HttpServletResponse

在这里插入图片描述

使用 Spring Session 功能

  • 创建和管理会话:Spring Session 可以创建和管理用户会话。它提供了 API 来创建新会话、获取当前会话、设置会话属性等。

  • 共享会话数据:在分布式环境中,Spring Session 可以将会话数据存储在共享的存储介质中,以便不同的服务器可以访问和共享相同的会话数据。

  • 跨域请求支持:Spring Session 提供了跨域请求支持,使得在多个域名或子域名下共享会话变得更加容易。

  • 扩展性和自定义:Spring Session 具有良好的扩展性,可以根据需要自定义会话存储、会话管理和会话策略等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/39459.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器学习笔记 - 基于C++的​​深度学习 二、实现卷积运算

一、卷积 卷积是信号处理领域的老朋友。最初的定义如下 在机器学习术语中: I(…)通常称为输入 K(…)作为内核,并且 F(…)作为给定K的I(x)的特征图。 虑多维离散域,我们可以将积分转换为以下求和 对于二维数字图像,我们可以将其重写为: <

编程练习(1)

目录 一.选择题 第一题&#xff1a; 第二题&#xff1a; 第三题&#xff1a; 第四题&#xff1a; 第五题&#xff1a; ​编辑 二.编程题 第一题&#xff1a; 第二题&#xff1a; 1.暴力方法&#xff1a; 2.数组法&#xff1a; 一.选择题 第一题&#xff1a; 解析&…

【vue】简洁优雅的火花线、趋势线

来由 在github发现个好看易用的vue趋势线组件&#xff0c;特此记录。 效果 趋势图生成后效果如上&#xff0c;线条为渐变色&#xff0c;可设置是否平滑。具体线条走势&#xff0c;根据数据动态生成。 使用 安装 npm i vuetrend -S 引入 import Vue from "vue"…

MySQL性能分析之慢查询日志查看

一、背景 MySQL的慢查询日志是MySQL提供的一种日志记录,他用来记录在MySQL中响应的时间超过阈值的语句,具体指运行时间超过long_query_time(默认是10秒)值的SQL,会被记录到慢查询日志中。 慢查询日志一般用于性能分析时开启,收集慢SQL然后通过explain进行全面分析,一…

时序预测 | MATLAB实现WOA-CNN-BiLSTM鲸鱼算法优化卷积双向长短期记忆神经网络时间序列预测

时序预测 | MATLAB实现WOA-CNN-BiLSTM鲸鱼算法优化卷积双向长短期记忆神经网络时间序列预测 目录 时序预测 | MATLAB实现WOA-CNN-BiLSTM鲸鱼算法优化卷积双向长短期记忆神经网络时间序列预测预测效果基本介绍程序设计学习总结参考资料 预测效果 基本介绍 时序预测 | MATLAB实现…

Python案例|Pandas正则表达式

字符串的处理在数据清洗中占比很大。也就是说,很多不规则的数据处理都是在对字符串进行处理。Excel提供了拆分、提取、查找和替换等对字符串处理的技术。在Pandas中同样提供了这些功能,并且在Pandas中还有正则表达式技术的加持,让其字符串处理能力更加强大。 01、正则 正则就是…

TypeScript相关面试题

typeScript 1.什么是TypeScript?是什么&#xff1f;特性&#xff1f;区别&#xff1f; 2.TypeScript数据类型&#xff1f;3.说说你对 TypeScript 中枚举类型的理解&#xff1f;应用场景&#xff1f;4.说说你对 TypeScript 中接口的理解&#xff1f;应用场景&#xff1f;使用方…

docker中的jenkins之流水线构建

docker中的jenkins之流水线构建项目 1、用node这种方式&#xff08;因为我用pipeline方式一直不执行&#xff0c;不知道为什么&#xff09; 2、创建项目 创建两个参数&#xff0c;一个是宿主端口号&#xff0c;一个是docker中的端口号 3、使用git项目中的Jenkinsfile 4、编写…

【AGI】世界首次实现室温超导LK-99

论文&#xff1a;The First Room-Temperature Ambient-Pressure Superconductor GPT论文总结&#xff1a; 根据所提供的信息&#xff0c;这篇论文报道了一种在室温和常压下工作的室温超导体LK-99。LK-99的超导性是通过微小的结构畸变引起的&#xff0c;而不是通过温度和压力等外…

09 - 连续的多个commit整理成1个

查看所有文章链接&#xff1a;&#xff08;更新中&#xff09;GIT常用场景- 目录 文章目录 将连续的多个commit整理成1个 将连续的多个commit整理成1个 将anranxiaohunzhang和xianglongshibazhang合并起来&#xff08;将anranxiaohunzhang合并到降龙十八掌上&#xff0c;生成新…

docker 学习--03 环境安装(本人使用的win10 Linux也是在win10下模拟)

docker 学习–03 环境安装&#xff08;本人使用的win10 Linux也是在win10下模拟&#xff09; docker 学习-- 01 基础知识 docker 学习-- 02 常用命令 文章目录 docker 学习--03 环境安装&#xff08;本人使用的win10 Linux也是在win10下模拟&#xff09;[TOC](文章目录) 1. wi…

【数学建模】逻辑回归算法(Logistic Resgression)

逻辑回归算法 简介逻辑回归与条件概率绘制sigmoid函数 简介 逻辑回归算法是一种简单但功能强大的二元线性分类算法。需要注意的是&#xff0c;尽管"逻辑回归"名字带有“回归”二字&#xff0c;但逻辑回归是一个分类算法&#xff0c;而不是回归算法。 我认为&#xff…

冉冉升起的星火,再度升级迎来2.0时代!

文章目录 前言权威性评测结果 星火大模型多模态功能插件功能简历生成文档问答PPT生成 代码能力 福利 前言 前几天从技术群里看到大家都在谈论《人工智能大模型体验报告2.0》里边的内容&#xff0c;抱着好奇和学习的态度把报告看了一遍。看完之后瞬间被里边提到的科大讯飞的星火…

2008-2020年全国各省绿色金融发展指数(含原始数据)

2008-2020年全国各省绿色金融发展指数&#xff08;含原始数据&#xff09; 1、时间&#xff1a;2008-2020年 2、范围&#xff1a;30个省市 不含西藏 3、来源&#xff1a;原始数据整理自csmar、eps、wind等数据库 4、原始数据指标&#xff1a; A股上市环保企业新增银行贷款…

企业服务器数据库遭到malox勒索病毒攻击后如何解决,勒索病毒解密

网络技术的发展不仅为企业带来了更高的效率&#xff0c;还为企业带来信息安全威胁&#xff0c;其中较为常见的就是勒索病毒攻击。近期&#xff0c;我们公司收到很多企业的求助&#xff0c;企业的服务器数据库遭到了malox勒索病毒攻击&#xff0c;导致系统内部的许多重要数据被加…

HCIP VRRP技术

一、VRRP概述 VRRP&#xff08;Virtual Router Pedundancy Protocol&#xff09;虚拟路由器冗余协议&#xff0c;既能够实现网关的备份&#xff0c;又能够解决多个网关之间互相冲突的问题&#xff0c;从而提高网络可靠性。 局域网中的用户的终端通常采用配置一个默认网关的形…

【uniapp】 软键盘弹出后fixed定位被顶上去问题

问题描述 当手机设计的导航栏为fixed定位上去时&#xff0c;输入框获取焦点就会把顶部自定义的导航栏顶到上面去&#xff0c;如下图所示 解决办法 输入框设置 :adjust-position“false” <input type"text" :adjust-position"false" focus"i…

AI绘画 | 一文学会Midjourney绘画,创作自己的AI作品(快速入门+参数介绍)

一、生成第一个AI图片 首先&#xff0c;生成将中文描述词翻译成英文 然后在输入端输入&#xff1a;/imagine prompt:Bravely running boy in Q version, cute head portrait 最后&#xff0c;稍等一会即可输出效果 说明&#xff1a; 下面的U1、U2、U3、U4代表的第一张、第二张…

Nacos AP架构集群搭建(Windows)

手写SpringCloud项目地址&#xff0c;求个star github:https://github.com/huangjianguo2000/spring-cloud-lightweight gitee:https://gitee.com/huangjianguo2000/spring-cloud-lightweigh 目录&#xff1a; 一&#xff1a;初始化MySQL 二&#xff1a;复制粘贴三份Nacos文…

分类预测 | MATLAB实现GAPSO-BP遗传算法组合粒子群算法优化BP神经网络多输入分类预测

分类预测 | MATLAB实现GAPSO-BP遗传算法组合粒子群算法优化BP神经网络多输入分类预测 目录 分类预测 | MATLAB实现GAPSO-BP遗传算法组合粒子群算法优化BP神经网络多输入分类预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 1.分类预测 | MATLAB实现GAPSO-BP遗…