springboot之shiro(入门)

SpringBoot之整合Shiro(最详细) pom.xml 2.3 创建前端页面 在webapp文件夹中创建index.jsp和login.jsp index.jsp login.jsp 2.4 配置视图信息 application.properties 2.5 解决IDEA冲突问题 JSP 与IDEA 与SpringBoot存在一定的不兼容,修改此配置即可解决 pom.xml 3.2 自定义Realm 在shiro文件夹下创建realm文件夹 3.3 Shiro配置 在config文件夹中创建ShiroConfig.java 3.4 启动测试 输入 阅读详情

搭建一个简单的系统框架

shiro环境搭建

导包

注意是整合soringboot的包

<!-- https://mvnrepository.com/artifact/org.apache.shiro/shiro-spring -->
<dependency>
	<groupId>org.apache.shiro</groupId>
	<artifactId>shiro-spring</artifactId>
	<version>1.5.3</version>
</dependency>

三个 Bean

@Configuration
public class ShiroConfig {

    @Bean
    public ShiroFilterFactoryBean getShiroFilterFactoryBean(@Qualifier("securityManager")DefaultWebSecurityManager securityManager){
        ShiroFilterFactoryBean bean = new ShiroFilterFactoryBean();
        bean.setSecurityManager(securityManager);
        return bean;
    }

    @Bean(name = "securityManager")
    public DefaultWebSecurityManager getDefaultWebSecurityManager(@Qualifier("userRealm") UserRealm userRealm){
        DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
        securityManager.setRealm(userRealm);
        return securityManager;
    }

    @Bean
    public UserRealm userRealm(){
        return new UserRealm();
    }
    
}

和一个自定义的Realm

public class UserRealm extends AuthorizingRealm {

    @Override
    protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) {
        return null;
    }

    @Override
    protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {
        return null;
    }
}

拦截,认证和授权

拦截

在刚刚搭建起来的环境中定制。
有一些还用不到的代码,先贴上

@Bean
    public ShiroFilterFactoryBean getShiroFilterFactoryBean(@Qualifier("securityManager")DefaultWebSecurityManager securityManager){
        ShiroFilterFactoryBean bean = new ShiroFilterFactoryBean();
        bean.setSecurityManager(securityManager);

        Map<String, String> filter = new LinkedHashMap<>();//拦截器
        filter.put("/user/add", "perms[user:add]");//拦截"/user/add"请求,需要有[user:add]权限才可以进入
        filter.put("/user/update", "perms[user:update]");

        bean.setFilterChainDefinitionMap(filter);//设置烂机器
        bean.setLoginUrl("/toLogin");//设置登录请求
        //shiro没有像security的自带登录页面
        bean.setUnauthorizedUrl("/noAuth");//设置没有权限显示的页面
        return bean;
    }

在filter那里设置了拦截,然后运行测试是否拦截成功。如果没有设置登录请求会报404错误

认证

认证是写在刚刚自定义的Realm里面。点击登录的时候,会走这个方法。
当然我们还需要一个处理登录的请求。

这是控制层的方法。正常流程应该是控制层调用服务层去执行操作
这些基本上都是死代码,固定的

 @RequestMapping("/login")
    public String login(String username,String password,Model model){
        Subject subject = SecurityUtils.getSubject();
        UsernamePasswordToken token = new UsernamePasswordToken(username, password);
        try {
            subject.login(token);
            return "index";
        }catch (UnknownAccountException e) {
            model.addAttribute("msg", "用户名错误!");
            return "login";
        }catch (IncorrectCredentialsException e) {
            model.addAttribute("msg", "密码错误!");
            return "login";
        }

    }

然后

@Override
    protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {
        UsernamePasswordToken userToken = (UsernamePasswordToken) token;
        //这里是链接数据库了,用的是mybatis链接
        User user = userMapper.queryUserByName(userToken.getUsername());
        
        if (user== null){
            return null;//报错 UnknownAccountException:用户名不存在
        }

        Subject subject = SecurityUtils.getSubject();
        subject.getSession().setAttribute("loginUser", user);//往session注入一个user

        return new SimpleAuthenticationInfo(user, user.getPassword(), "");//返回一个简单认证
    }

测试是否可以连接数据库进行认证

授权

 @Override
    protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) {
        SimpleAuthorizationInfo info = new SimpleAuthorizationInfo();

        Subject subject = SecurityUtils.getSubject();
        User currentUser = (User) subject.getPrincipal();//拿到当前登录用户

        info.addStringPermission(currentUser.getPerms());//从数据库获取权限并授权
        return info;
    }

整合thyemleaf

导入整合包

<dependency>
	<groupId>com.github.theborakompanioni</groupId>
	<artifactId>thymeleaf-extras-shiro</artifactId>
	<version>2.0.0</version>
</dependency>

需要配置,一同写在ShiroConfig 类里面

@Bean
public ShiroDialect getShiroDialect(){
	return new ShiroDialect();
}

然后就是把一些用户没有权限的版块隐藏

<div shiro:haspermission="这里写权限,比如: user:add">
	······
</div>

shiro学习简单记录到这里结束。

从零开始学Spring Boot与Shiro教程 从零开始学Spring Boot,Shiro教程,PDF电子书!2合一下载 立即下载

相关推荐

【电力电子控制】基于强化学习的单相逆变器并网电流控制

本文将尝试以 DQN(Deep Q-Network)为例,设计并训练一个面向单相逆变器的智能控制器,实现对并网电流的精准调节。

weixin_62596197的博客 463

企业员工角色权限管理平台(SpringBoot2.0+Mybatis+Shiro+Vue)

课程简介:历经半个多月的时间,Debug亲自撸的 “企业员工角色权限管理平台” 终于完成了。正如字面意思,本课程讲解的是一个真正意义上的、企业级的项目实战,主要介绍了企业级应用系统中后端应用权限的管理,其中主要涵盖了六大核心业务模块、十几张数据库表。 其中的核心业务模块主要包括用户模块、部门模块、岗位模块、角色模块、菜单模块和系统日志模块;与此同时,Debug还亲自撸了额外的附属模块,包括字典管理模块、商品分类模块以及考勤管理模块等等,主要是为了更好地巩固相应的技术栈以及企业应用系统业务模块的开发流程! 核心技术栈列表: 值得介绍的是,本课程在技术栈层面涵盖了前端和后端的大部分常用技术,包括Spring Boot、Spring MVC、Mybatis、Mybatis-Plus、Shiro(身份认证与资源授权跟会话等等)、Spring AOP、防止XSS攻击、防止SQL注入攻击、过滤器Filter、验证码Kaptcha、热部署插件Devtools、POI、Vue、LayUI、ElementUI、JQuery、HTML、Bootstrap、Freemarker、一键打包部署运行工具Wagon等等,如下图所示: 课程内容与收益: 总的来说,本课程是一门具有很强实践性质的“项目实战”课程,即“企业应用员工角色权限管理平台”,主要介绍了当前企业级应用系统中员工、部门、岗位、角色、权限、菜单以及其他实体模块的管理;其中,还重点讲解了如何基于Shiro的资源授权实现员工-角色-操作权限、员工-角色-数据权限的管理;在课程的最后,还介绍了如何实现一键打包上传部署运行项目等等。如下图所示为本权限管理平台的数据库设计图: 以下为项目整体的运行效果截图: 值得一提的是,在本课程中,Debug也向各位小伙伴介绍了如何在企业级应用系统业务模块的开发中,前端到后端再到数据库,最后再到服务器的上线部署运行等流程,如下图所示:

Unity轻量级框架QFramework:四层架构与命令事件驱动的实战指南

在Unity游戏开发中,软件架构是确保项目可维护性和可扩展性的核心。通过分层架构(如MVC、DDD)和事件驱动设计,开发者能够有效管理代码复杂度,实现模块间的解耦与高效通信。QFramework作为一个轻量级框架,精准地运用了这些原理,通过严格定义的四层架构(表现层、系统层、数据层、工具层)和命令/事件通信规则,为中小型项目提供了“约束下的自由”。其核心价值在于以极简的代码(不足1000行)强制实施清晰的职责分离,如使用命令模式集中管理状态变更,并通过事件驱动实现响应式更新。这种设计特别适用于解决项目规模扩

weixin_42521032的博客 262

Springboot整合Shiro框架入门

Springboot整合Shiro框架入门 1、快速开始demo 2、Springboot集成Shiro 2.1、环境搭建 2.2、shiro的拦截 2.3、shiro的认证 2.4、整合mybatis 2.5、shiro进行授权 2.6、shiro整合thymeleaf 3、小结 1、快速开始demo 来到shiro的官网:shiro官方网站: 下载官方在git仓库上提供的源码,下载后解压: 官方提供了在多种场景下使用的demo,等一下会用到sample里面的东西。下面直接按官方推荐

web15285868498的博客 8317

VSCODE编辑+EIDE插件调试+STM8_Debug插件调试+IAR_STM8工具链编译开发项目

1. 安装 在VS CODE安装EIDE、STM8-Debug插件 2. 使用 EIDE 创建一个 8/16 Bit MCU 项目 新建虚拟文件夹,把工程外部的文件添加进虚拟文件夹,实现工程和源文件之间的关系,而不用实际把源文件复制到工程目录下。 EIDE工程和源文件实现分开放置,EIDE(EIDE工程)、EWSTM8(IAR STM8工程)、Project(ST Visual Develop工程) 选择工具链 烧录工具选择 头文件包含目录 添加宏定义 3. 编译 4. 使用STM8

TrueLink的博客 5500

用AI助手Cursor轻松自动生成流程图

通过 Cursor + Mermaid,我们可以快速、准确地自动生成流程图,上面演示的例子部分流程图可能比较丑,我们可以通过流程图软件导入Mermaid代码,然后手动进行微调就可以了,如果你对美观要求不是特别多,可以直接用,这将极大地提升代码可视化和架构设计的效率。

呱牛 Just do IT 1936

springBoot整合Shiro(详细教程分析)

🚩1.1 什么是ShiroShiro是一个开源的Java安全框架,它提供了身份认证、授权、加密和会话管理等功能,可以帮助我们快速地构建安全可靠的应用程序。🚩1.2 为什么要用Shiro在开发Web应用程序时,安全性是一个非常重要的问题。使用Shiro可以帮助我们快速地构建安全可靠的应用程序,而且Shiro的使用非常灵活,可以根据我们的需求进行定制。

ggjklncffd的博客 6383

Pandas滚动窗口的妙用:动态计算列数据的最大值

Pandas的滚动窗口(rolling window)功能是数据分析中处理时间序列数据的重要工具。本文通过实例演示了如何使用rolling(window=4).max()计算DataFrame列A的滚动最大值,并将结果存入新列Max_Range。该方法会在4个元素的滑动窗口内计算最大值,前3行因数据不足显示为NaN。这种技术广泛应用于金融分析(如股价波动)、数据平滑和趋势识别等场景,能有效帮助分析数据的动态变化特征。示例展示了从数据准备到结果输出的完整流程,体现了Pandas在处理滑动窗口计算时的高效性和便

m0_74337424的博客 53

Spring Boot学习之Shiro

Apache Shiro 是一个Java 的安全(权限)框架。Shiro可以完成,认证,授权,加密,会话管理,Web集成,缓存等。Shiro官网。

缘友一世的博客 2711

【人工智能之深度学习】18. 金融风控实战:TCN时序卷积网络构建信用卡欺诈实时检测系统

摘要:信用卡欺诈交易识别是金融风控的核心环节,其面临欺诈样本占比低(仅0.1%)、实时响应要求高(毫秒级)等挑战。本文基于IEEE-CIS公开数据集,构建基于时序卷积网络(TCN)的欺诈检测系统,通过捕捉用户交易行为的时序模式识别异常。详细阐述全流程:从数据预处理(构造交易序列特征)、TCN模型设计(轻量级架构适配实时场景),到实时检测部署(异步处理确保低延迟)。实验显示,该系统精确率达63%、召回率89%,误杀率仅0.2%,推理延迟8ms,较XGBoost等传统模型性能显著提升。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1128

华为HCIE之TS部分整理

TroubleShooting 整体拓扑 1. MSTP 题目需求:site1 中,CLIENT1 属于 VLAN12,CLIENT3 属于 VLAN34;MSTP 中的 VLAN12 属于 instance1,vlan34 属于 instance2;两个 instance 的主备根桥分别在 SW1 和 SW2 上,并且要求 CLIENT1访问 R1 时经过的路径是 SW3-SW1-R1;同时要求 CLIENT3 访问 R1 时经过的路径是SW3-SW2-R1; 排错思路: ①查看SW3 SW1 SW

ledrsnet的博客 5756

Shiro入门(整合springboot)

Shiro入门 1. 概念 Apache Shiro是一个java的安全(权限)框架,可以非常容易地开发出足够号地应用,其不仅可以用在JAVASE环境,也可以用在JAVAEE环境,可以完成认证、授权、加密、会话管理、web集成、缓存等; 三大组件 Subject:代表当前主体,与当前应用交互的任何东西都是subject; SecurityManager:安全管理器,所有有关安全的操作均与此有关。是shiro核心,负责与其他组件交互; Realm:Shiro 从 Realm 获取安全数据(如用户、角

weixin_41961894的博客 169

IEEE S&P 2026 大模型安全论文整理

本文梳理了 IEEE S&P 2026(第47届 IEEE 安全与隐私研讨会)中与 LLM Safety 相关的论文,涵盖大模型越狱攻击、防御与对齐、隐私保护、RAG 安全、多模态大模型安全、智能体安全、图-LLM 安全、工具链安全及生成式 AI 安全与隐私等方向。

CSPhD-winston的博客 1332

SpringBoot搭建Shiro的快速入门

章节目录1. Shiro1.1 Shiro简介1.2 Shiro三大核心组件1.2.1 Subject1.2.2 SecurityManager1.2.3 Realm1.3 Shiro的认证和授权流程1.3.1 认证流程1.3.2 授权流程2. SpringBoot集成Shiro并完成登录操作2.1 集成Shiro 1. Shiro Shiro官网 1.1 Shiro简介 以下为Shiro的简单介绍: Shiro 是一个强大、简单易用的 Java 安全权限框架 Shiro 可以非常容易的开发出足够好的应用

菩提小猿的博客 1717

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Spring Boot 整合 Shiro 快速入门

Spring Boot 整合 Shiro 快速入门1 Spring Boot 快速集成 Shiro 示例1.1 新建 Spring Boot Maven 示例工程项目1.2 依赖引入 Pom.xml1.3 配置 application.yml1.4 自定义 Realm 领域 UserRealm 实现自定义认证与授权1.6 shiro 实现登录认证1.6.1 登录 html 页面1.6.2 登录逻辑...

fishpro的博客 1742

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Shiro整合Spring Boot入门

这是一篇Shiro入门的博文,将整合Spring Boot快速入门Shiro。实现基本的认证、授权、密码加密功能 认证:也就是我们平时所说的登录,但认证不局限于账号密码登录,扫码、人脸识别、指纹等都可以算是认证 授权:不同的人拥有不同的权限,比如在后台管理系统中,管理员和普通用户看到的菜单是不一样的、有些资源普通用户只有读权限没有写权限等 Shiro简介 Shiro简单来说就是一个安全框架,它可以帮助我们快速、容易的实现认证、授权的相关功能。 我们先了解一下Shiro的架构。 在Shiro中有三个重要.

weixin_44335140的博客 340

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

【Springboot学习】Shiro快速入门及与SpringBoot集成

目录1、Shiro简介1.1、Shiro 是什么?1.2、有哪些功能?1.3、Shiro架构(外部)1.4、Shiro架构(内部)2、Hello World2.1、快速实践3、SpringBoot集成3.1、SpringBoot整合Shiro环境搭建3.2、Shiro实现登录拦截3.3、Shiro实现用户认证3.4、Shiro整合Mybatis3.5、Shiro实现用户授权3.6、Shiro整合Thymeleaf3.7、所有代码4、完美的解释 1、Shiro简介 1.1、Shiro 是什么? Apach

胡毛毛的博客 1724

六、SpringBoot权限框架零基础入门到实战(shiro)

目录SpringBoot权限框架零基础入门到实战(shiro)一、从零开始认识 shiro1.1、shiro 简介1.2、shiro 基本功能点1.3、认证流程1.4、授权流程二、Spring Boot 集成 shiro 快速入门2.1、idea Spring Initializr 快速创建项目2.2、加入shiro 所需的依赖2.3、shiro 用户认证2.4、shiro 用户授权三、Sprin...

believer 2287

Spring Boot Shiro 入门

1. 概述 艿艿:本文是《芋道 Spring Boot 安全框架 Spring Security 入门》的姊妹篇,所以开头就“重复”再来一遍,嘿嘿。 基本上,在所有的开发的系统中,都必须做认证(authentication)和授权(authorization),以保证系统的安全性。???? 考虑到很多胖友对认证和授权有点分不清楚,艿艿这里引用一个网上有趣的例子: FROM《认证 (aut...

weixin_42073629的博客 925

Shiro 快速入门 SpringBoot 整合 Shiro

Shiro Apache Shiro 是 Java 的一个安全框架。使用 Apache Shiro 的人越来越多,因为它相当简单,对比 Spring Security,可能没有 Spring Security 做的功能强大,但是在实际工作时可能并不需要那么复杂的东西 不依赖任何容器, 可以运行在 JAVA SE 和 JAVA EE 项目中, 主要作用是对访问系统的用户进行身份认证, 授权, 会话管理, 加密等操作 Shiro 就是用来解决安全管理的系统化框架 Shiro 核心组件 用户, 角色, 权限 给角

qq_45560445的博客 239

spring boot 、mybatis-plus、shiro整合入门教程(三)——shiro使用

接续上一篇,spring boot 、mybatis-plus、shiro整合入门教程(二)——mybatis-plus常用操作 这篇主要介绍下shiro在项目中是如何使用的, 前期的主要工作是数据库表的设计,上篇文章已经给出表的设计,详细的数据库初始化sql,可以参考代码库的sql, 简单说下登录原理,用户每次登录的时候生成token,同时根据用户id更新数据库中的token有效时间和toke...

u011915230的专栏 1302

Shiro+springboot快速入门(狂神学习,集成mybatis)

Shiro+springboot菜鸟入门(狂神学习) 一:10分钟开始shiro入门 1.进入shiro官网shiiro官网 找到10分钟快速入门 在前往githubgithub的shiro地址 建立一个maven项目 pom.xml导入以下配置: <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-core</artifa

qq_51269815的博客 1305

Shiro - 十分钟入门、SpringBoot整合

官方 【总结】 shiro 常用依赖 官方教程 Download Apache Shiro Apache Shiro Tutorial (参考) 参考 WebFilter、FilterRegistrationBean:整合filter的两种方式 自定义登录出两种方式 role,perms 配置: shiroFilter配置详解 Shiro完整教程 附带各种配置 Apache Sh...

LawssssCat的博客 586

Spring Boot 入门 Spring Boot 整合Shiro登录认证

Spring Boot 入门整合目录

lemon的博客 225

springboot 数据库假面_基于springboot搭建的shiro框架--快速入门篇

最近因公司业务需要,研究了一下shiro框架,虽然在研究过程中也遇到过不少问题,不过好在最后都解决了。于是在这里写一篇文章记录一下自己的使用过程。本篇文章只讨论shiro的快速使用,暂不考虑原理分析,后续可能会出源码分析的文章。话不多说,我们马上进入正题,本篇文章采用springboot2.0,jdk1.8。先贴一张项目结构 一、引入相关依赖并添加配置首先我们在搭建好的springboot框架中...

weixin_39566593的博客 166
上一篇: springboot之集成Security(入门)
下一篇: springboot使用Swagger管理、测试接口
凉白开º
博客等级 码龄8年 899粉丝 31原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值