Shiro快速入门之一

news2024/11/23 11:18:58

一、前言

Java有两个出名的安全框架,一个是Apache Shiro,另一个是Spring Security ,相对而言Shiro更简单、控制权限的粒度可粗可细,我们项目中使用的是Shiro。

二、概

Shiro最主要的功能是验证用户身份和用户访问权限控制,比如判断用户是否分配了一个角色,或判断用户是否有完成某个操作的权限等。它不会去维护用户与权限,这需要我们自己提供接口然后注入给Shiro。

1、三大核心组件

  • subject

            主体,可以是用户也可以是程序,主体要访问系统,系统需要对主体进行认证、授权。

  • securityManager:

             安全管理器,主体进行认证和授权都是通过它进行。

  • realm

             领域,可以理解为DAO,通过它存取认证、授权相关数据。

2、四大核心功能

  • Authentication

             认证即登录,用于用户身份识别。

  • Authorization

             授权即访问控制,判断用户是否有权限去访问受保护的资源。

  • Cryptography

             通过加密算法保护数据安全。

  • Session Management

             会话管理,即用户访问你应用自身携带的数据,甚至可以在非Web程序上使用。

三、最简单例子

1、build.gradle

2、AuthenticationTest.java

Shiro认证过程

1、调用subject.login(token)进行登录,其会委托给SessionManager,调用之前必须通过

SecurityUtils.setSecurityManager进行设置。

2、SecurityManager负责真正身份验证逻辑,它会委托给Authenticator进行身份验证。

3、Authenticator是真正的身份验证者。

DelegatingSubject.java

DefaultSecurityManager.java

AbstractAuthenticator.java

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

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

相关文章

SparkSQL声明式

简单案例 import org.apache.spark.sql.SparkSession import org.junit.Testcase class Person(id:Int,name:String,sex:String,age:Int) class DataSetCreate {val spark SparkSession.builder().appName("test").master("local[4]").getOrCreate()impo…

Enfocus PitStop Pro 2022

Enfocus PitStop Pro是一款专为PDF编辑和优化而设计的软件,旨在帮助用户高效、准确地处理PDF文件。其功能包括但不限于: 全面的PDF编辑功能:包括添加、删除或重新排列页面,合并和分割PDF文件,以及调整页面大小和方向等…

kafka+ubuntu20.04+docker配置

记录一次配置过程 安装docker 参加下面链接的第一部分 Ubuntu20.04使用docker安装kafka服务-CSDN博客 安装zookeeper docker run -d --name zookeeper -p 2181:2181 -v /etc/localtime:/etc/localtime wurstmeister/zookeeper安装kafka服务 docker run -d --name kafka …

FPGA UDP RGMII 千兆以太网(4)ARP ICMP UDP

1 以太网帧 1.1 1以太网帧格式 下图为以太网的帧格式: 前导码(Preamble):8 字节,连续 7 个 8’h55 加 1 个 8’hd5,表示一个帧的开始,用于双方 设备数据的同步。 目的 MAC 地址:6 字节,存放目的设备的物理地址,即 MAC 地址 源 MAC 地址:6 字节,存放发送端设备的…

VMware 虚拟cpu进入关闭状态 的解决办法

很好,现在是vm 虚拟机节目的连续剧了 首先,我们安装好了,vm软件。 其次,我们在vm中创建了虚拟机。 再其次,我们解决了,开启虚拟机计算机自动重启的问题。 最后解决了虚拟机开启后整个一个界面黑屏动作&…

2023年【汽车驾驶员(中级)】考试题库及汽车驾驶员(中级)模拟考试题库

题库来源:安全生产模拟考试一点通公众号小程序 汽车驾驶员(中级)考试题库根据新汽车驾驶员(中级)考试大纲要求,安全生产模拟考试一点通将汽车驾驶员(中级)模拟考试试题进行汇编&…

Jmeter 请求返回多字段 —— 传递登录接口!

Jmeter创建JDBC请求获取登录账密,结果存储到变量中,依次传给登录接口。 1、添加JDBC Request并设置变量,获取数据库多个字段值 ①添加好JDBC Connection Configuration并做好数据库连接配置 ②导入mysql驱动jar包 ③测试计划->添加线程…

maven打包Cannot resolve xxx问题

问题描述: idea多层的maven项目中,在子工程使用mvn clean package报错Cannot resolve xxx,但是在pom文件中使用ctrlclick可以进入这个jar包,且本地仓库存在该jar包 解决: 1、先把本地仓库里面存在的jar包复制到别的地方 2、删除本…

Niushop单商户及多商户v5商城系统第三方商业插件cps联盟视频购物及多包装库存转换的安装

一、后端安装 把video文件夹直接上传到addon目录下即可登录后台,设置->系统维护->插件管理->未安装插件,找到插件直接安装即可 3.在营销->营销中心->营销活动,找到视频列表这个插件,点击进去配置视频即可 4.装…

【2021集创赛】Arm杯一等奖作品—基于 Cortex-M3 内核 SOC 的动目标检测与跟踪系统

本作品介绍参与极术社区的有奖征集|秀出你的集创赛作品风采,免费电子产品等你拿~ 团队介绍 参赛单位:北京理工大学 队伍名称:飞虎队 指导老师:李彬 参赛杯赛:Arm杯 参赛人员:余裕鑫 胡涵谦 刘鹏昀 获奖情况&#xff1…

腾讯待办下架,待办事项提醒怎么设置?

有不少网友表示自己之前想要记录待办事项的话,就会用腾讯待办小程序,但是近日发现这款待办小程序弹出了“业务关停通知”的公告,将于2023年12月20日全面停止运营并下架。腾讯待办下架的原因是什么呢?从通知上看,下架的…

LeetCode(13)除自身以外数组的乘积【数组/字符串】【中等】

目录 1.题目2.答案3.提交结果截图 链接: 238. 除自身以外数组的乘积 1.题目 给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素…

2023-11-14 LeetCode每日一题(阈值距离内邻居最少的城市)

2023-11-14每日一题 一、题目编号 1334. 阈值距离内邻居最少的城市二、题目链接 点击跳转到题目位置 三、题目描述 有 n 个城市,按从 0 到 n-1 编号。给你一个边数组 edges,其中 edges[i] [fromi, toi, weighti] 代表 fromi 和 toi 两个城市之间的…

Maven 的 spring-boot-maven-plugin 红色报错

1、想要处理此情况&#xff0c;在工具下面加上指定的版本号。 2、给自己的maven的setting文件加工一下。 <mirrors><!--阿里云镜像1--><mirror><id>aliyunId</id><mirrorOf>central</mirrorOf><name>aliyun maven</name>…

时间序列预测实战(十六)PyTorch实现GRU-FCN模型长期预测并可视化结果

往期回顾&#xff1a;时间序列预测专栏——包含上百种时间序列模型带你从入门到精通时间序列预测 一、本文介绍 本文讲解的实战内容是GRU-FCN(门控循环单元-全卷积网络)&#xff0c;这是一种结合了GRU&#xff08;用于处理时间序列数据&#xff09;和FCN&#xff08;全卷积网络…

基于51单片机PCF8591数字电压表LCD1602液晶显示设计( proteus仿真+程序+设计报告+讲解视频)

基于 51单片机PCF8591数字电压表LCD1602液晶设计 ( proteus仿真程序设计报告讲解视频&#xff09; 仿真图proteus7.8及以上 程序编译器&#xff1a;keil 4/keil 5 编程语言&#xff1a;C语言 设计编号&#xff1a;S0060 51单片机PCF8591数字电压表LCD1602液晶设计 1.主要功…

ESP32C3工程找不到蓝牙头文件解决方法

本次在我的工程里要加上蓝牙辅助配网功能的方法。 1、在官方SDK里找到例程并复制头文件和源文件到自己的工程中。 我复制到如下图所示&#xff0c;并增添app_blufi.h以供其它文件操作。并增添make文件。 其中CMakeLists.txt和component.mk如下 2、使能menuconfig里的蓝牙并使能…

基于51单片机PCF8591数字电压表数码管显示设计( proteus仿真+程序+设计报告+讲解视频)

PCF8591数字电压表数码管显示 1.主要功能&#xff1a;讲解视频&#xff1a;2.仿真3. 程序代码4. 设计报告5. 设计资料内容清单&&下载链接资料下载链接&#xff08;可点击&#xff09;&#xff1a; 基于51单片机PCF8591数字电压表数码管设计( proteus仿真程序设计报告讲…

小红书自动引流软件的运行分享,以及涉及到技术与核心代码分享

先来看实操成果&#xff0c;↑↑需要的同学可看我名字↖↖↖↖↖&#xff0c;或评论888无偿分享 一、引言 随着互联网的发展&#xff0c;引流成为许多企业和个人获取潜在客户的重要手段。然而&#xff0c;手动引流不仅效率低下&#xff0c;而且效果难以保证。为了解决这一问题…

最短路:leetcode1334. 阈值距离内邻居最少的城市

1334. 阈值距离内邻居最少的城市 有 n 个城市&#xff0c;按从 0 到 n-1 编号。给你一个边数组 edges&#xff0c;其中 edges[i] [fromi, toi, weighti] 代表 fromi 和 toi 两个城市之间的双向加权边&#xff0c;距离阈值是一个整数 distanceThreshold。 返回能通过某些路径…