Shiro快速入门之二

一、前言

Shiro快速入门之一 介绍了Shiro三大核心组件,四大核心功能,以及一个简单的Test Demo,接下来两篇我会用一个比较完整的例子来讲述Shiro的认证及授权是怎么做的,本篇侧重于介绍认证的过程

二、Shiro认证例子

1、例子概述

  • 使用SpringBoot+ThymeLeaf+Jpa搭建的例子

  • ThymeLeaf 是一个和Velocity差不多的模板引擎,如果不是前后端分离的项目,页面可以用SpringBoot官方推荐的ThymeLeaf模板,使用ThymeLeaf还可以解决发送HTML邮件内容拼接的问题,具体可看 从一坨代码说起。

  • Jpa是Java Persistence API,它需要Provider来提供实现,Hibernate是JPA Provider 最强一个实现。 注:后续会整理一篇介绍一下tk-mybatis、mybatis、jpa的区别。

2、pom.xml

用spring.io快速创建springboot project,然后加入依赖

  • spring-boot-starter-web

  • spring-boot-starter-thymeleaf

  • spring-boot-starter-data-jpa

  • mysql-connector-java

  • shiro-spring

3、application.properties

配置数据库连接和ThymeLeaf

spring.jpa.properties.hibernate.hbm2ddl.auto=update

注:该行设置为update,加载时会根据model类自动建立表结构,用jpa做demo这点还是很方便的,不用自己创建表结构。

对于配置文件spring.jpa.properties.hibernate.dialect,要写一个MySQLConfig来设置字符集。

4、实体类

权限类

角色类

用户类

注:创建三个实体类 权限类、角色类、用户类,并设置好关联关系,权限与角色多对多,角色与用户多对多,这样在应用启动后会自动创建5张表。

permission、role、role_permission、user、user_role,但数据库还是需要先创建好的,表是会自动创建。

初始化一条数据到用户表,用于测试。

5、UserService、Dao类

6、MyShiroRealm

自定义的Realm实现,主要实现两个方法一个是认证,一个是授权

上面这段就是认证(登录)的代码,先获取用户登录输入的账号(注:登录的代码subject.login(token);会调用该方法),然后到数据库中根据用户名获取用户对象信息,再用从数据库获取的信息(密码,salt)来构造SimpleAuthenticationInfo对象。

注:授权代码下篇再讲

7、ShiroConfig

注:配置Shiro过滤器,哪些地址不拦截,哪些地址要拦截,需要注意顺序,以及登录页地址,成功或失败后跳转页面地址。

注:将自定义的MyShiroRealm设置到SecurityManager中。

8、UserController

登录认证Controller,调用subject.login(token)进行认证,成功或失败后跳到对应的页面。

login.html

index.html

三、总结

用Shiro写认证代码,第一步要先实现Realm的认证方法,将从数据库查出来的密码,salt设置到AuthenticationInfo对象中,在用户登录时会将输入的用户名密码传给SecurityManger,然后进行比对用户名和密码是否正确。

核心代码,判断realm对象是否支持用户的token。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

H5三网魔幻手游【众神传奇】win服务端+GM授权后台+架设教程

搭建资源下载地址:H5三网魔幻手游【众神传奇】win服务端GM授权后台架设教程-海盗空间

锂价疲软,市场需求持续低迷,赣锋锂业在短期内将继续面临痛苦

来源:猛兽财经 作者:猛兽财经 公司介绍 在赣锋锂业(01772)(002460)网站上,赣锋锂业称自己是一家拥有“中国第一”和“世界最大锂金属生产商”的“锂化合物产能”公司。 根据其2022财年年度报告,该公司最近一个财年的收入有84%和1…

日历应用程序 BusyCal mac中文版软件特点

BusyCal mac是一款日历应用程序,它可以帮助用户轻松地管理日程安排、事件提醒、会议安排等。BusyCal 支持 macOS 和 iOS 平台,并且可以与 iCloud、Google 日历、Exchange 等多种日历服务进行同步。 BusyCal mac软件特点 强大的日历功能:Busy…

Rust编程中的共享状态并发执行

1.共享状态并发 虽然消息传递是一个很好的处理并发的方式,但并不是唯一一个。另一种方式是让多个线程拥有相同的共享数据。在学习Go语言编程过程中大家应该听到过一句口号:"不要通过共享内存来通讯"。 在某种程度上,任何编程语言中的信道都类…

活动通知邀请函H5页面制作源码系统+动感的背景音乐 自定义你想要的页面 源码完全开源可二开 带完整搭建教程

在现代社交活动中,一份精美、个性化的活动邀请函不仅能够展现主办方的品味和诚意,还可以吸引更多的参与者。然而,制作一份精美的活动邀请函需要专业的设计和技术支持,这对于很多非专业人士来说是一个难题。此外,传统的…

mysql之主从复制和读写分离

一、主从复制 1、定义 主mysql上的数据(新增或修改库、表里的数据)都会同步到从mysql上 2、mysql的主从复制模式(面试题) (1)异步复制(常用):默认的复制模式。客户端…

网络运维Day15

文章目录 Prometheus简介环境准备配置模板机环境部署阿里镜像源实验环境准备 部署prometheus服务查看及测试 Promethues 被监控端Grafana简介部署 Grafana 服务器修改数据源 监控数据库安装部署Mariadb安装导出器修改 Prometheus服务端配置Grafana配置 总结 Prometheus简介 Pr…

需要买哪些网络设备才能过等保?求解!

随着等保2.0的落地执行,越来越多的企业需要过等保。但不少企业都是第一次过等保,对于等保政策不是很了解,有小伙伴问,需要买哪些网络设备才能过等保?这里我们小编就给大家来简单回答一下,仅供参考哈&#x…

Q learning

Q learning Q Learning是强化学习算法中的一个经典算法。在一个决策过程中,我们不知道完整的计算模型,所以需要我们去不停的尝试。 算法流程 整体流程如下: Q-table 初始化 第一步是创建 Q-table,作为跟踪每个状态下的每个动作…

电商平台api接口对接电商数据平台,获取商品详情页面实时信息须知

随着互联网的发展和普及,电商平台已成为人们日常生活中不可或缺的一部分。而为了保证电商平台的正常运行,平台与开发者之间需要进行数据交互,这便涉及到了电商平台API接口对接的问题。本文将详细介绍电商平台API接口对接的须知事项。 一、了解…

双算法SSL证书

国际算法的优势与挑战 1. RSA算法 RSA算法是一种基于大素数分解的非对称加密算法,长期以来一直是SSL证书的主流选择之一。然而,随着计算能力的提高,RSA算法的密钥长度需要不断增加,以维持足够的安全性。 2. ECC算法 椭圆曲线密…

迅软DSE答疑专业解析:内网遭受攻击的威胁到底有多大

当今数字化时代,企业数据安全已演变为企业生存和发展的至关重要因素。随着信息技术的迅猛发展,企业内网不仅是承载核心数据和信息的关键平台,也成为黑客和恶意软件攻击的主要目标。因此,确保企业数据安全和内网安全已成为企业管理…

ADC内部电源监控

文章目录 前言一、分析芯片手册1、43.5 ADC internal supply monitoring2、11.1.1.1 Chip Control register (CHIPCTL)1)SIM_CHIPCTL[ADC_SUPPLY]2)SIM_CHIPCTL[ADC_SUPPLYEN] 3、44.4.2 ADC Status and Control Register 1 (SC1A - aSC1P) 二、EB配置1、…

@CacheInvalidate(name = “xxx“, key = “#results.![a+b]“,multi = true)是什么意思

@CacheInvalidate 注解是 JetCache 框架提供的注解,它是由阿里巴巴开源的组织 Alibaba Group 开发和维护的。JetCache 是一款基于注解的缓存框架,提供了丰富的缓存功能和灵活的配置选项,可用于增强应用程序的性能和可扩展性。JetCache 支持多种缓存后端,包括内存缓存、Redi…

Ubuntu22.04源码安装ROS-noetic(ROS1非ROS2),编译运行VINS-MONO

1. Ubuntu22.04源码编译安装ROS-noetic 由于22.04默认安装ROS2,但很多仓库都是基于ROS1的,不想重装系统,参考这两个博客安装了ROS-noetic: 博客1. https://blog.csdn.net/Drknown/article/details/128701624博客2. https://zhua…

(七)Spring源码解析:Spring事务

对于事务来说,是我们平时在基于业务逻辑编码过程中不可或缺的一部分,它对于保证业务及数据逻辑原子性立下了汗马功劳。那么,我们基于Spring的声明式事务,可以方便我们对事务逻辑代码进行编写,那么在开篇的第一部分&…

CRM系统对科技企业有哪些帮助

随着国家政策的倾斜和5G等相关基础技术的发展,中国人工智能产业在各方的共同推动下进入爆发式增长阶段,市场发展潜力巨大。CRM客户管理系统作为当下最热门的企业应用,同样市场前景广阔。那么,CRM系统对科技企业有哪些帮助&#xf…

Python开源项目VQFR——人脸重建(Face Restoration),模糊清晰、划痕修复及黑白上色的实践

Python Anaconda 的安装等请参阅: Python开源项目CodeFormer——人脸重建(Face Restoration),模糊清晰、划痕修复及黑白上色的实践https://blog.csdn.net/beijinghorn/article/details/134334021 VQFR也是 腾讯 LAB 的作品&…

ninja 编译介绍

首先献上官方链接 https://ninja-build.org/manual.html Ninja 何以存在? 从官方文档看出,编译很快!怎么实现的呢??所以,还是值得了解一下的,继续~ 编译优势 项目中使用 具体语法,…

Find My滑雪板|苹果Find My技术与滑雪板结合,智能防丢,全球定位

滑雪板运动是一项越来越受年轻人青睐的运动,随着年轻人的消费能力不断提高,滑雪板市场也会得到更多的机会和发展空间。滑雪板市场规模是一个不断增长的市场,目前市场规模已经相当大。根据统计数据显示,全球滑雪板市场规模约为26亿…