整理出来的精选shiro面试题

         

1、简要介绍Shiro框架吗?

Apache Shiro是Java的安全框架。 使用Shiro,可以轻松地开发足够好的APP应用程序。 这不仅可以用于JavaSE环境,也可以用于JavaEE环境。 Shiro提供了身份验证、许可、加密、会话管理、与Web集成和缓存等功能。

三个核心组件: Subject、SecurityManager和Realms。

Subject :“当前操作的用户”。 然而,在Shiro中,Subject的概念不仅仅指人,还可以是第三方进程、后台账户(Daemon Account )或其他类似物。 那只意味着“现在和软件对话的东西”。 但是,考虑到很多目的和用途,可以认为是Shiro的“用户”概念。 Subject表示当前用户的安全操作。

安全管理器:是管理所有用户安全操作的Shiro框架的核心和典型的Facade模型。 Shiro通过安全管理器管理内部组件实例,并通过这些实例提供各种安全管理服务。

Realm:Realm作为Shiro与APP应用程序安全数据之间的“桥梁”或“连接器”。 也就是说,当Shiro对用户执行验证(登录)和授权(访问控制)时,它将从APP应用程序配置的Realm中搜索用户及其权限信息。

2、Shiro的四个主要组件?

安全管理器

典型的Facade、Shiro通过它对外提供安全管理的各种服务。

评估器

“世卫组织Are you? "进行验证。 通常涉及用户名和密码。 此组件收集principals和credentials,并将其提交到APP应用程序系统。 如果提交的凭证与APP应用程序系统提供的凭证匹配,则可以继续访问。 如果不匹配,则必须重新提交principals和credentials或终止直接访问。

Authorizer

通过认证后,此组件将帮助您筛选登录者的访问控制,包括“世卫组织can do what”和“世卫组织can do which actions”。 Shiro采用“基于Realm”的方法。 这意味着用户、用户组、角色和权限的聚合物。

会话管理器

该组件保证了异构客户端的访问,配置简单。 它基于POJO/J2SE,不与任何客户端或协议相关联。

3、Shiro的工作原理?

APP代码(APP应用代码是我们自己的代码。 程序内需要权限控制时,需要调用Subject的API。

Subject :主体表示当前用户。 所有Subject都与SecurityManager捆绑在一起,与Subject的所有交互都委托给SecurityManager,可以将Subject视为一扇门。 真正的执行者是安全管理器。

SecurityManage (所有安全相关操作都与SecurityManager交互并管理所有Subject的安全管理器。

Realm (域shiro从Realm获取安全数据(用户、角色、权限)。 即安全管理器

要验证用户id,必须从Realm中获取相应的用户并进行比较,以确定用户id是否合法。 此外,还必须从Realm获得用户的相应角色/权限,以验证用户是否可以操作。 Realm可以被认为是数据源,也就是安全的数据源。

4、Shiro的四种权限控制方式?

url级别的权限控制

方法注释权限控制

代码级别的权限控制

5、什么是粗粒子和微粒的权限?

资源类型的管理称为粗粒度权限控制,只能控制菜单、按钮和方法。 作为粗粒度的例子,用户具有用户管理的权限,并具有导出订单行的权限。

管理资源实例称为粒度管理,它管理数据级别的权限。 例如,用户只允许修改自己部门的员工信息,用户只允许导出自己创建的订单详细信息。

总结:

粗粒子权限:对url链接的控制。

微粒权限:数据级别的控制。

例如,卫生局可以咨询所有用户,卫生室只能咨询我们的用户。

6、粗粒子和微粒如何认可?

对于粗粒度的授权,很容易使用系统架构级别的功能,即系统功能操作中统一的粗粒度权限管理。 对于精细粒度授权,建议不要将其作为系统体系结构级别的功能。 由于数据级管理是系统的业务需求,业务功能很可能会随着业务需求的变化而发生变化,因此建议在业务级定制和开发数据级权限管理。 例如,用户只能通过在服务接口中添加验证实现来更改自己创建的商品信息,服务接口必须接收当前操作员的标识信息。 与商品信息制作者的识别信息进行比较,如果不一致,则不允许变更商品

粗粒子权限:可以用过滤器批量阻止url。

微粒权限:服务控制,程序级控制,定制编程。

        

        以上就是“整理出来的精选shiro面试题”,你能回答上来吗?如果想要了解更多的相关内容,可以评论留言,或者私信博主。

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

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

相关文章

微信小程序如何配置并使用less?

1,检查微信开发者工具(工具版本1.03)————这步很重要不然后面按步骤实行后会发现急死你也还是不管用,我之前死在过这一步,所以大家不要再次踩坑了 ~ ~ 。。。 2,在VScode中下载Less插件 3,…

uni-app:分页实现多选功能

效果 代码解析 一、标签-列表 <view class"item_all" v-for"(item, index) in info" :key"index"><view class"position parameter-info text-over" :class"{checked_parameter: item.checked}" :data-id"i…

SSH 认证原理

SSH协议登录服务器&#xff1a; $ ssh userhost 主要有两种登录方式&#xff1a;第一种为密码口令登录&#xff0c;第二种为公钥登录 密码口令登录 通过密码进行登录&#xff0c;主要流程为&#xff1a; 1、客户端连接上服务器之后&#xff0c;服务器把自己的公钥传给客户端…

界面控件DevExpress.Drawing图形库早期增强功能分享

众所周知&#xff0c;DevExpress在v22.2发布周期中引入了全新的DevExpress.Drawing图形库&#xff08;并且已经在随后的小更新中引入了一系列增强功能&#xff09;。 在这篇博文中&#xff0c;我们将总结在DevExpress v23.1中解决的一些问题&#xff0c;以及在EAP构建中为以下…

C++中点云聚类算法的实现与应用探索

第一部分&#xff1a;C中点云聚类算法的实现与应用 在当今的计算机视觉领域&#xff0c;点云数据是一种重要的三维数据类型&#xff0c;它能有效表达三维物体的形状信息。然而&#xff0c;由于点云数据的无序性和稀疏性&#xff0c;对其进行分析与处理的难度较大。本文将介绍如…

Android 13 Hotseat定制化修改——006 hotseat图标禁止移动到Launcher中

目录 一.背景 二.方案 三.具体实践 一.背景 客户定制需要修改让hotseat中的icon不要移动到Launcher中,所以需要进行定制 二.方案 原生的Hotseat与Launcher是可以相互移动的,然后现在的需求是Hotseat中的图标只能在Hotseat中移动,所以需要做下限制 思路:在事件拦截的地…

代码随想录算法训练营day59

文章目录 Day59 下一个更大元素II题目思路代码 接雨水题目思路代码 Day59 下一个更大元素II 503. 下一个更大元素 II - 力扣&#xff08;LeetCode&#xff09; 题目 给定一个循环数组&#xff08;最后一个元素的下一个元素是数组的第一个元素&#xff09;&#xff0c;输出每…

ChatGPT“侵入”校园,教学评价体制受冲击,需作出调整

北密歇根大学的教授奥曼在学生作业中发现了一篇关于世界宗教的“完美论文”。“这篇文章写得比大多数学生都要好......好到不符合我对学生的预期&#xff01;”他去问ChatGPT&#xff1a;“这是你写的吗&#xff1f;”ChatGPT回答&#xff1a;“99.9%的概率是的。” ChatGPT“侵…

【Axure 教程】动态面板

【动态面板】是 Axure 中另外一个神级的元件&#xff0c;它的江湖地位可以说跟【中继器】不相上下&#xff0c;【动态面板】提供了简单的配置&#xff0c;却可以实现非常丰富的效果&#xff0c;在实际设计中应用非常广泛。 对于刚入门的产品经理来说&#xff0c;学习【动态面板…

AndroidStudio学习笔记

AndroidStudio学习笔记/踩坑 webview组件和其他组件起冲突问题解决方法原因 webview组件和其他组件起冲突 问题 webview和NestedScrollView组件一起使用时,会出现webview无法滑动的问题 解决方法 NestedScrollView nestedScrollView getView().findViewById(R.id.mine_scro…

Bootload U-Boot分析

Bootloader是在操作系统运行之前执行的一段小程序。通过这段小程序可以初始化硬件设备、建立内存空间的映射表&#xff0c;从而建立适当的系统软硬件环境&#xff0c;为最终调用操作系统内核做好准备。 对于嵌入式系统&#xff0c;Bootloader是基于特定硬件平台来实现的。因此…

C++11之右值引用

C11之右值引用 传统的C语法中就有引用的语法&#xff0c;而C11中新增了的 右值引用&#xff08;rvalue reference&#xff09;语法特性&#xff0c;所以从现在开始我们之前学习的引用就叫做左值引用&#xff08;lvalue reference&#xff09;。无论左值引用还是右值引用&#…

题目:2293.极大极小游戏

​​题目来源&#xff1a; leetcode题目&#xff0c;网址&#xff1a;2293. 极大极小游戏 - 力扣&#xff08;LeetCode&#xff09; 解题思路&#xff1a; 按要求模拟即可。 解题代码&#xff1a; class Solution {public int minMaxGame(int[] nums) {int nnums.length;whi…

BIO 阻塞式IO

BIO 阻塞式IO Java BIO 就是传统的 Java I/O 编程&#xff0c;其相关的类和接口在 java.io。 BIO(BlockingI/O)&#xff1a;同步阻塞&#xff0c;服务器实现模式为一个连接一个线程&#xff0c;即客户端有连接请求时服务器端就需要启动一个线程进行处理&#xff0c;如果这个连…

面试热题(滑动窗口最大值)

给你一个整数数组 nums&#xff0c;有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回 滑动窗口中的最大值 。 输入&#xff1a;nums [1,3,-1,-3,5,3,6,7], k 3 输出&#xff1a;[3,3,5,…

【数据分析】pandas 一

目录 一&#xff0c;pandas简介&#xff1a; 二&#xff0c;pandas数据结构Series简介&#xff1a; 2.1 data为ndarray 2.2 data为字典 三&#xff0c;Serise切片操作&#xff1a; 四&#xff0c;Series性质&#xff1a; 4.1 Series类似于numpy,字典 4.2 矢量化操作和标…

Flask进阶:构建RESTful API和数据库交互

在初级教程中&#xff0c;我们已经介绍了如何使用Flask构建基础的Web应用。在本篇中级教程中&#xff0c;我们将学习如何用Flask构建RESTful API&#xff0c;以及如何使用Flask-SQLAlchemy进行数据库操作。 一、构建RESTful API REST&#xff08;Representational State Tran…

【LeetCode】88. 合并两个有序数组 - 双指针

这里写自定义目录标题 2023-8-7 22:35:41 88. 合并两个有序数组 双指针 2023-8-7 22:35:41 class Solution {public void merge(int[] nums1, int m, int[] nums2, int n) {int last m n ;while(n > 0){if(m > 0 && nums2[n-1] > nums1[m-1]){nums1[las…

objectMapper.getTypeFactory().constructParametricType 方法的作用和使用

在使用 Jackson 库进行 JSON 数据的序列化和反序列化时&#xff0c;经常会使用到 ObjectMapper 类。其中&#xff0c;objectMapper.getTypeFactory().constructParametricType 方法用于构造泛型类型。 具体作用和使用如下&#xff1a; 作用&#xff1a; 构造泛型类型&#x…

Linux软件包管理

Linux软件包管理 一.软件运行环境基础 1.gcc编译程序的大致过程 gcc 编译程序主要经过四个过程&#xff1a; 处理&#xff08;Pre-Processing&#xff09; 译 &#xff08;Compiling&#xff09; 编 &#xff08;Assembling&#xff09; 接 &#xff08;Linking&#xff09; …