- 配置pom.xml
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.xayuli</groupId> <artifactId>nettels</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <name>nettels</name> <description>Demo project for Spring Boot</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.4.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <!--<dependency>--> <!--<groupId>mysql</groupId>--> <!--<artifactId>mysql-connector-java</artifactId>--> <!--</dependency>--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <!--<exclusions>--> <!--<exclusion>--> <!--<groupId>org.springframework.boot</groupId>--> <!--<artifactId>spring-boot-starter-tomcat</artifactId>--> <!--</exclusion>--> <!--</exclusions>--> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> <!-- 这个需要为 true 热部署才有效 --> </dependency> <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-spring</artifactId> <version>1.4.0</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> <dependency> <groupId>com.microsoft.sqlserver</groupId> <artifactId>sqljdbc4</artifactId> <version>4.0</version> <!--<scope>test</scope>--> </dependency> <!--声明spring boot内嵌tomcat的作用范围 在运行时不起作用--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> <finalName>nettels</finalName> </build> <repositories> <repository> <id>spring-snapshots</id> <name>Spring Snapshots</name> <url>https://repo.spring.io/snapshot</url> <snapshots> <enabled>true</enabled> </snapshots> </repository> <repository> <id>spring-milestones</id> <name>Spring Milestones</name> <url>https://repo.spring.io/milestone</url> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>spring-snapshots</id> <name>Spring Snapshots</name> <url>https://repo.spring.io/snapshot</url> <snapshots> <enabled>true</enabled> </snapshots> </pluginRepository> <pluginRepository> <id>spring-milestones</id> <name>Spring Milestones</name> <url>https://repo.spring.io/milestone</url> <snapshots> <enabled>false</enabled> </snapshots> </pluginRepository> </pluginRepositories> </project> -
ShiroConfig
package com.xayuli.nettels.controller; import java.util.LinkedHashMap; import java.util.Map; import org.apache.shiro.authc.credential.HashedCredentialsMatcher; import org.apache.shiro.mgt.SecurityManager; import org.apache.shiro.spring.web.ShiroFilterFactoryBean; import org.apache.shiro.web.mgt.DefaultWebSecurityManager; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class ShiroConfig { @Bean public ShiroFilterFactoryBean shirFilter(SecurityManager securityManager){ System.out.println("ShiroConfiguration.shirFilter()"); ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean(); System.out.println("设置拦截器--->"); // 必须设置 SecurityManager shiroFilterFactoryBean.setSecurityManager(securityManager); //拦截器. Map<String,String> filterChainDefinitionMap = new LinkedHashMap<String,String>(); //配置退出过滤器,其中的具体的退出代码Shiro已经替我们实现了 filterChainDefinitionMap.put("/logout", "logout"); filterChainDefinitionMap.put("/userLogin", "anon");//开放login方法 filterChainDefinitionMap.put("/templates/css/**", "anon");//设置不拦截 filterChainDefinitionMap.put("/templates/js/**", "anon");//设置不拦截 filterChainDefinitionMap.put("/templates/images/**", "anon");//设置不拦截 //<!-- 过滤链定义,从上向下顺序执行,一般将 /**放在最为下边 -->:这是一个坑呢,一不小心代码就不好使了; //<!-- authc:所有url都必须认证通过才可以访问; anon:所有url都都可以匿名访问--> filterChainDefinitionMap.put("/**", "authc"); // 如果不设置默认会自动寻找Web工程根目录下的"/login.jsp"页面 shiroFilterFactoryBean.setLoginUrl("/index"); // 登录成功后要跳转的链接 shiroFilterFactoryBean.setSuccessUrl("/success"); //未授权界面; shiroFilterFactoryBean.setUnauthorizedUrl("/403"); shiroFilterFactoryBean.setFilterChainDefinitionMap(filterChainDefinitionMap); return shiroFilterFactoryBean; } /** * 自己写的 * @return */ @Bean public MyShiroRealm myShiroRealm(){ MyShiroRealm myShiroRealm = new MyShiroRealm(); myShiroRealm.setCredentialsMatcher(hashedCredentialsMatcher()); return myShiroRealm; } /** * 注入 * @return */ @Bean public SecurityManager securityManager(){ DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager(); securityManager.setRealm(myShiroRealm()); System.out.println("注入我的shiro"); return securityManager; } /** * 凭证匹配器 * (由于我们的密码校验交给Shiro的SimpleAuthenticationInfo进行处理了 * 所以我们需要修改下doGetAuthenticationInfo中的代码; * ) * @return */ @Bean public HashedCredentialsMatcher hashedCredentialsMatcher(){ HashedCredentialsMatcher hashedCredentialsMatcher = new HashedCredentialsMatcher(); System.out.println("(⊙_⊙)设置MD5加密"); hashedCredentialsMatcher.setHashAlgorithmName("md5");//散列算法:这里使用MD5算法; hashedCredentialsMatcher.setHashIterations(1);//散列的次数,比如散列两次,相当于 md5(md5("")); return hashedCredentialsMatcher; } } -
MyShiroRealm
package com.xayuli.nettels.controller; import com.xayuli.nettels.pojo.TSUser; import com.xayuli.nettels.service.UserService; import org.apache.shiro.authc.AuthenticationException; import org.apache.shiro.authc.AuthenticationInfo; import org.apache.shiro.authc.AuthenticationToken; import org.apache.shiro.authc.SimpleAuthenticationInfo; import org.apache.shiro.authz.AuthorizationInfo; import org.apache.shiro.realm.AuthorizingRealm; import org.apache.shiro.subject.PrincipalCollection; import javax.annotation.Resource; public class MyShiroRealm extends AuthorizingRealm { @Resource private UserService userService; @Override protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) { System.out.println("进行了权限认证!!!"); return null; } /** * 身份验证 * @param authenticationToken * @return * @throws AuthenticationException */ @Override protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException { //获取用户的输入的账号. String username = (String)token.getPrincipal(); //通过username从数据库中查找 User对象,如果找到,没找到. //实际项目中,这里可以根据实际情况做缓存,如果不做,Shiro自己也是有时间间隔机制,2分钟内不会重复执行该方法 TSUser userInfo = userService.findByUsername(username); if(userInfo == null){ return null; } //账号判断; //加密方式; //交给AuthenticatingRealm使用CredentialsMatcher进行密码匹配,如果觉得人家的不好可以自定义实现 String Md5pass = userInfo.getPassword();//"25d55ad283aa400af464c76d713c07ad"; SimpleAuthenticationInfo authenticationInfo = new SimpleAuthenticationInfo(userInfo,Md5pass,getName());//此处传的是用户对象,实体中密码,和getName //明文: 若存在,将此用户存放到登录认证info中,无需自己做密码对比,Shiro会为我们进行密码对比校验 return authenticationInfo; } } -
application.pproperties
spring.thymeleaf.prefix=classpath:/templates/page/ spring.thymeleaf.suffix: .html spring.mvc.static-path-pattern=/templates/** spring.resources.static-locations=classpath:/templates
相关推荐
信号与系统——卷积、相关运算与FFT关系以及工程应用(三)
卷积运算、相关运算
maven 仓库
apache https://repository.apache.org/snapshots/ https://repo1.maven.org/maven2/ spring https://repo.spring.io/libs-milestone 阿里云 http://maven.aliyun.com/nexus/content/groups/public/ ...
SAP 销售订单及发票 利润中心替代 Userexit出口 配置及程序
在跨公司销售业务中,跨公司销售订单的发票时无法从销售订单中将利润中心带到发票中,所以在跨公司的发票创建过程中需要配置出口来获取对应销售订单行项目的利润中心。 事务代码: 0KEM 配置步骤: 1、创建一个新的替代 2、创建一个步骤 3、维护一个先决条件,比如针对于特定工厂 PCASUB-VKBUR = '0001' 4、选择替代程序FORM,FORM必须为指定程序中存在的FORM名 5、编辑替代程序FORM 实现效果: 在程序FORM中打上断点 ...
一篇文章教你spring源码搭建和跳过本人踩过的坑
#Spring5源码下载搭建注意事项 1.JDK需要升级到1.8以上。 2.由于Spirng5以后都是采用Gradle来编译,gradle版本4.3.1,下载地址:https://gradle.org/next-steps/?version=4.3.1&format=bin,下载下来解压即可,无需安装 3.Spring3.0开始,Spring源码采用github托管,不再提供官网下载链接。...
电磁波函数复数表示法:为什么物理学家偏爱e^(ikz)而非cos(kr-wt)?
本文深入解析了电磁波函数复数表示法(如e^(ikz))相较于传统余弦形式的巨大优势。通过欧拉公式,复数形式将复杂的三角运算转化为简洁的指数运算,在微分、积分、线性叠加及处理相位时展现出极高的计算效率,是物理学家和工程师分析波动现象的核心工具。
Python实战:5分钟搞定抖音无水印视频下载(附完整代码)
本文系统介绍了抖音无水印视频下载的多种技术方案,重点解析了抖音视频的获取逻辑与去水印原理。文章提供了从零代码的浏览器插件到可编程的Python脚本的完整实现路径,并附带了详细的代码示例,帮助用户快速构建自己的抖音视频下载工具箱。
Spring学习笔记10
用户身份验证应用程序的安全机制需要在授权用户访问资源之前确定用户的身份,即用户是谁。大多数应用都会弹出一个登陆界面供用户输入用户名密码。在Spring安全机制中,authentication manager由org.acegisecurity.AuthenticationManager接口定义。public insterface AuthenticationManager {
Vue路由守卫实战:利用token实现跨项目免登录跳转(最新版)
本文详细介绍了如何利用Vue路由守卫和Token验证实现跨项目免登录跳转方案。通过核心架构设计、路由守卫精细化控制及Token交换安全实践,有效解决了多系统跳转中的认证问题,提升用户体验和系统连贯性。
Spring repo - repo.spring.io
Spring repo - repo.spring.io https://repo.spring.io/webapp/#/artifacts/browse/tree/General/libs-release-local/org/springframework
目前固态激光雷达在机器人领域的应用难点汇总
固态激光雷达在机器人领域面临性能与成本的双重挑战:探测性能上,动态范围不足(60-80dB)导致高/低反射物体识别困难,近距盲区(30-50cm)与长距精度(±3cm)矛盾突出;结构上视场角与点云密度难以平衡,多雷达拼接又带来同步误差。成本方面,核心元件(SPAD/OPA芯片)良率低(<50%)、校准工序复杂,单机成本超200美元。环境适应性上,粉尘附着、振动偏移(±2°)和光衰(1万小时衰减15%)制约可靠性。
28-Halcon-- union_object_model_3d函数功能(用于3D模型融合)
Halcon算子union_object_model_3d是专业的3D模型融合工具,主要用于多视图拼接、部件组装和多源数据融合。该算子支持点云、网格和参数化模型输入,提供多种融合算法选择,包括基础点云拼接('points_cloud')、网格融合('mesh')和精确CAD布尔运算('cad')。工业应用涵盖逆向工程扫描拼接、汽车部件虚拟装配等场景,支持性能优化如空间分区和流式处理。算子还解决颜色属性融合、法向量保留等特殊需求,并提供拼接误差分析、拓扑验证等质量评估手段。最佳实践包含动态场景重建工作流和CA
【Shiro第二篇】SpringBoot + Shiro实现用户身份认证功能
一、概述 前面一篇文章,我们已经总结了Shiro相关的一些概念以及架构知识,相信小伙伴们对Shiro安全框架都有了一定的认识。本篇文章我们将通过示例详细说明在日常工作中常见的-----用户身份认证功能。 什么是身份认证呢,简单理解,就是在应用中谁能证明他就是他本人。一般提供如他们的身份 ID 一些标识信息来表明他就是他本人,如提供身份证,用户名 / 密码来证明。 在 shiro 中,用户需要提供principals(身份)和credentials(证明)给 shiro,从而应用能验证用户身份: ...
解锁RK3588+RTL8211F:千兆以太网PHY调优秘籍
本文探讨了RK3588芯片搭配RTL8211F千兆以太网PHY的优化方案。文章首先分析了RK3588和RTL8211F的硬件特性,指出时序问题可能源于时钟信号不稳定、传输延迟和PHY内部逻辑延迟。针对这些问题,提出了选用高质量时钟源、优化PCB布线等时序优化策略,以及合理配置硬件参数、优化网络协议等延迟优化方法。在配置实践部分,详细介绍了硬件连接规范和软件配置步骤,并建议使用Iperf、Ping等工具进行性能测试。最后总结了常见问题解决方案,展望了未来PHY芯片和传输技术的发展趋势。这些优化措施可显著提升网
SpringBoot整合Shiro之拦截器配置
SpringBoot整合Shiro之拦截器配置 springboot整合shiro应用 https://www.cnblogs.com/ll409546297/p/7815409.html 1、Shiro是Apache下的一个开源项目,我们称之为Apache Shiro。它是一个很易用与Java项目的的安全框架,提供了认证、授权、加密、会话管理,与spring Security 一样都...
迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)
迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)
锂电池充电器电路设计 里面有电路
锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。
springboot整合shiro
-shiro和springboot整合的依赖-->
最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版
Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。
shiro在springboot中的使用以及权限管理的实现
方法中,可以根据用户的角色、权限等信息,将其拥有的权限字符串添加到授权信息中。在Shiro中,权限通常使用字符串表示,可以根据应用场景自行定义权限字符串。用于存储系统角色的基本信息,包括角色名称、描述等。用于存储系统权限的基本信息,包括权限名称、描述等。用于存储系统用户的基本信息,包括用户名、密码等。路径下的不同HTTP方法所需要的权限,例如。注解,指定需要的权限。如果用户没有足够的权限,将会抛出。用于存储系统角色与权限的关联信息。在需要进行权限控制的方法上,使用。3.实现自定义Realm。
VC中sqlite的使用
在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示
Springboot整合shiro(及yaml配置形式)
1.shiro是什么? Shiro是Apache下的一个开源项目。shiro属于轻量级框架,相对于SpringSecurity简单的多,也没有SpringSecurity那么复杂。以下是我自己学习之后的记录。 官方架构图如下: 2.主要功能 shiro主要有三大功能模块: 1. Subject:主体,一般指用户。 2. SecurityManager:安全管理器,管理所有Subject,可以配合...
Shiro整合SpringBoot实现登录认证
这里写自定义目录标题Shiro整合SpringBootShiro以及SpringBoot环境配置mvaen环境配置实体类的创建User类的创建UserVo的创建解释一下VoUserVo代码块SpringBoot的配置application.properties中的配置application.yml中的配置配置合并Shiro的配置ShiroConfig文件UserRealm.java文件Contro...
Shiro身份认证和权限管理(授权)
1. Shiro的身份认证流程信息: 后台接受凭证信息(密码)和身份信息(用户名)封装到Subject主体中,调用Subject自己的登陆方法,完成校验。底层校验代码是实现AuthenticatingRealm 类重写doGetAuthentica方法,根据传过来的值来 查询数据库完成用户认证。 2. Shiro的用户授权流程信息: 先认证过以后,根据认证信息查询用户的权限级别,...
Shiro基础及应用
Shiro安全框架 一、Shiro简介 官网文档:http://shiro.apache.org/tutorial.html Apache Shiro 是一个Java 的安全(权限)框架。 Shiro可以完成,认证,授权,加密,会话管理,Web集成,缓存等。 Shiro 可以非常容易的开发出足够好的应用,其不仅可以用在JavaSE环境,也可以用在JavaEE环 境。 主要功能 Authentication:身份认证、登录,验证用户是不是拥有相应的身份; Authorization:授权,即权
SpringBoot 集成Shiro
SpringBoot2.0集成Shiro 最近搞了下shiro安全框架,网上找了好多篇博客,感觉要么都是复制粘贴,要么就是错误百出。至于稍微讲解一下为什么要这么做,就更别说了。这篇文...
前后端分离项目中 springboot 集成 shiro 实现权限控制
前后端分离项目中 springboot 集成 shiro 实现权限控制
Spring Boot 集成Shiro
Spring Boot 集成Shiro maven引入依赖 <!--shiro--> <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-spring-boot-web-starter<...
Springboot集成Shiro
本文是回馈粉丝的一份礼物,旨在springboot中快速集成shiro实现鉴权,无需到处查资料,简单易懂,复制粘贴,一气呵成。
SpringBoot+Shiro管理
Shiro是一款主流的Java安全框架,不依赖任何容器,可以运行在Java SE和Java EE项目中。它的主要作用是对访问系统的用户进行身份认证、授权、会话管理、加密等操作。Shiro基于session进行身份认证和访问控制,提供了一套完善的权限管理机制。
6613



被折叠的 条评论
为什么被折叠?



