Spring Security 简单入门|学习笔记

简介: 快速学习 Spring Security 简单入门

开发者学堂课程【Spring Security知识精讲与实战演示(一)Spring Security 简单入门】学习笔记与课程紧密联系,让用户快速学习知识

课程地址https://developer.aliyun.com/learning/course/730/detail/13030


Spring Security 简单入门

 

内容介绍:

一、配置 web.xml

二、配置 spring-security.xml

三、将spring-security.xml 配置文件引入到applicationContext.xml 中

四、运行结果

 

一、配置web.xml

编写 spring-security 的核心过滤器链代码。

<web-app xmlns="http://java.sun.com/xml/ns/javaee"

xmlns:xsi="http://lww.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/javaee

http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"

Version = "3.0" >

<display-name>Archetype Created WebApplication</display-name>

<! - Spring Security 过滤器链,注意过滤器名称必须叫 springSecurityFilterChain-->

<!--SpringSecurity 核心过滤器链-->

<!--SpringSecurityFilterChina 名称不能修改-->

<filter >

<filter-name>springSecurityFilterChain</filter-name>

<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>

</filter>

<filter-mapping>

<filter-name>springSecurityFilterChain</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

</web-app>

 

二、配置 spring-security.xml

<? xml version ="1.e” encoding =" UTF -8"?>

< beans xmlns =“ http :/// wMW . springframework . org / schema / beans "

xmlns : xsi ="http://wow.w3.org/2001/XMLSchema- instance "

xm1ns: context =“http://www. springframework . org / schema / context ”

xmlns : aop =“http://wwW. springframework . org / schema / aop "

xmlns : tx =“http://www. springframework . org / schema / tx ”

xmlns : security =“ http :/// wm . springframework . org / schema / security ”

xsi : schemaLocation =“ http :/// www . springframework . org / schema / beans

http://Mow. springframewok . org / schema / beans / spring - beans . xsd

http://www. springframework . org / schema / context

http://www. springframework . org / schema / context / spring - context . xsd

http://ww. springframework . org / schema / aop

http://wwW. springframework . org / schema / aop / spring - aopxsd

http://wwW. springframework . org / schema / tx

http://www. springframework , org / schema / tx / spring - tx . xsd

http :/// wwW . springframework . org / schema / security

http://www. springframework . org / schema / security / spring - security - xsd ">

以下配置非常重要,若没有这些配置讲运行不了程序。

<!--配置 springSecurity-->

<!--

auto-confing=“true”表示自动加载 springsecurity 的配置文件>

use-expressions=”true”表示使用 springsecurity 的 el 表达式来配置springseccyrity

-->

< security : http auto - config -“ true ” use - expressions =" true ">

<!--拦截资源-->

<!-﹣使用 spring 的 el 表达式来指定项目所有资源访问都必须有 ROLE USER 或 ROLE _ ADMIN 角色﹣->

<!--

<!-- pattern ="/**”表示拦截所有资源

access =“ hasAnyRole (' ROLE _ USER ')表示只有ROLE-USER角色才能访问资源

-->

< security : intercept - url pattern ="/**” access =“ hasAnyRole (' ROLE _ USER ',' ROLE _ ADMIN ‘)

</ security : http >

HasRole 只能写一个决策,HasRole 可以写多个决策,这里选择HasRole;为了测试方便,选择跟数据库保持一致选择 ROLE USER;pattern ="/**” 中的第一个星表示路径,第二个表示子目录以及其后面所带的参数;

现在 ROLE_USER 的这样角色还能访问所有资源?怎样系统才能拿到角色?需要要认证,那么要认证就必须有用户名和密码。需要先来一个非常简单的入门,暂时不连数据库。在内存中模拟两个临时用户。点查模拟临时用户的这端配置直接贴过来。后面对它进行优化。

<!--设置 Spring Security 认证用户信息的来源﹣->

<!--

Springsecyrity默认的认证必须是加密的,加上{noop}表示不加密认证.

-->

< security : authentication - manager >

< security : authentication - provider >

< security : user - service >

< security : user name -" user ” password -"[ noop } user ”authorities =“ ROLE _ USER ”/>

< security : user name =" admin " password ="[ noop } admin "authorities =" ROLE _ ADMIN ”/>

</ security : user - service >

</ security : authentication - provider ></ security : authentication - manager >

</ beans >

一共模拟了两个用户,一个是 user,一个是 admin,user 的密码是 user,admin的密码是admin,user的角色是 ROLE-USER,admin 的角色是 ROLE-ADMIN,。 no o p 是什么意思?要注意是 Spring Security 的认证必须是加密的。启动外部工程,是不是只会读取外部的所有信息?而外部 ROLE 会自动加载 applicationContext?很明显是不会;将 spring-security.xml 配置文件引入到 applicationContext.xml 中。

 

三、将spring-security.xml配置文件引入到applicationContext.xml中

<!-﹣引入 SpringSecurity 主配置文件﹣->

< import resource =“ classpath : spring - security . xml “/>

外部工程有=两个容器,一个是复容器一个是子容器;子容器可以访问复容器的内容,但复容器不可以访问子容器的内容,但是对于外界,它只能访问子容器。比如:复容器就相当于整个中国,而子容器就相当于中国开放的一个关口,如果国外的人想访问中国的资源,就必须通过这个关口来访问作呀,否则将不能访问;如果国外的人想访这些资源,它可以通过子容器去取调用。随着 applicationContext 一起交代,将 springsecuruty 配置文件引入到 spring 文件中。

 

四、运行结果

以下页面是错误,springsecurity 提供,没有提供认证所致;

image.png

当启动项目时,按理用启动index.jsp,点开配置文件,配置了/**它包含了index页面,所以要访问index必要要访问ROLE-USER的角色,可是现在没有这个角色,要认证通过才有,所以继续用user认证,所以没有这个角色,spring会自动跳转到它自己提供的页面。

F12如下图,是个简单的报表单,可以看到用户名和密码,注意隐藏项“_csrf”跨域所致登录页面误差;

 image.png

看控制台异常信息,因权限不足,内部定义;

image.png

加载信息,有一大堆的过滤器链。

image.png

相关文章
|
JSON 安全 Java
什么是JWT?如何使用Spring Boot Security实现它?
什么是JWT?如何使用Spring Boot Security实现它?
2054 5
|
2月前
|
搜索推荐 JavaScript Java
基于springboot的儿童家长教育能力提升学习系统
本系统聚焦儿童家长教育能力提升,针对家庭教育中理念混乱、时间不足、个性化服务缺失等问题,构建科学、系统、个性化的在线学习平台。融合Spring Boot、Vue等先进技术,整合优质教育资源,提供高效便捷的学习路径,助力家长掌握科学育儿方法,促进儿童全面健康发展,推动家庭和谐与社会进步。
|
2月前
|
XML Java 应用服务中间件
【SpringBoot(一)】Spring的认知、容器功能讲解与自动装配原理的入门,带你熟悉Springboot中基本的注解使用
SpringBoot专栏开篇第一章,讲述认识SpringBoot、Bean容器功能的讲解、自动装配原理的入门,还有其他常用的Springboot注解!如果想要了解SpringBoot,那么就进来看看吧!
443 2
|
7月前
|
人工智能 Java API
Spring AI 实战|Spring AI入门之DeepSeek调用
本文介绍了Spring AI框架如何帮助Java开发者轻松集成和使用大模型API。文章从Spring AI的初探开始,探讨了其核心能力及应用场景,包括手动与自动发起请求、流式响应实现打字机效果,以及兼容不同AI服务(如DeepSeek、通义千问)的方法。同时,还详细讲解了如何在生产环境中添加监控以优化性能和成本管理。通过Spring AI,开发者可以简化大模型调用流程,降低复杂度,为企业智能应用开发提供强大支持。最后,文章展望了Spring AI在未来AI时代的重要作用,鼓励开发者积极拥抱这一技术变革。
2718 71
Spring AI 实战|Spring AI入门之DeepSeek调用
|
9月前
|
监控 Java 应用服务中间件
微服务——SpringBoot使用归纳——为什么学习Spring Boot
本文主要探讨为什么学习Spring Boot。从Spring官方定位来看,Spring Boot旨在快速启动和运行项目,简化配置与编码。其优点包括:1) 良好的基因,继承了Spring框架的优点;2) 简化编码,通过starter依赖减少手动配置;3) 简化配置,采用Java Config方式替代繁琐的XML配置;4) 简化部署,内嵌Tomcat支持一键式启动;5) 简化监控,提供运行期性能参数获取功能。此外,从未来发展趋势看,微服务架构逐渐成为主流,而Spring Boot作为官方推荐技术,与Spring Cloud配合使用,将成为未来发展的重要方向。
364 0
微服务——SpringBoot使用归纳——为什么学习Spring Boot
|
8月前
|
安全 Java 数据库
Spring Security 实战指南:从入门到精通
本文详细介绍了Spring Security在Java Web项目中的应用,涵盖登录、权限控制与安全防护等功能。通过Filter Chain过滤器链实现请求拦截与认证授权,核心组件包括AuthenticationProvider和UserDetailsService,负责用户信息加载与密码验证。文章还解析了项目结构,如SecurityConfig配置类、User实体类及自定义登录逻辑,并探讨了Method-Level Security、CSRF防护、Remember-Me等进阶功能。最后总结了Spring Security的核心机制与常见配置,帮助开发者构建健壮的安全系统。
700 0
|
5月前
|
前端开发 Java API
基于 Spring Boot 3 与 React 的 Java 学生信息管理系统从入门到精通实操指南
本项目基于Spring Boot 3与React 18构建学生信息管理系统,涵盖前后端开发、容器化部署及测试监控,提供完整实操指南与源码,助你掌握Java全栈开发技能。
278 0
|
6月前
|
安全 Java 数据库
Spring Boot 框架深入学习示例教程详解
本教程深入讲解Spring Boot框架,先介绍其基础概念与优势,如自动配置、独立运行等。通过搭建项目、配置数据库等步骤展示技术方案,并结合RESTful API开发实例帮助学习。内容涵盖环境搭建、核心组件应用(Spring MVC、Spring Data JPA、Spring Security)及示例项目——在线书店系统,助你掌握Spring Boot开发全流程。代码资源可从[链接](https://pan.quark.cn/s/14fcf913bae6)获取。
1046 2
|
6月前
|
Java 关系型数据库 MySQL
【Spring】【事务】初学者直呼学会了的Spring事务入门
本文深入解析了Spring事务的核心概念与使用方法。Spring事务是一种数据库事务管理机制,通过确保操作的原子性、一致性、隔离性和持久性(ACID),维护数据完整性。文章详细讲解了声明式事务(@Transactional注解)和编程式事务(TransactionTemplate、PlatformTransactionManager)的区别与用法,并探讨了事务传播行为(如REQUIRED、REQUIRES_NEW等)及隔离级别(如READ_COMMITTED、REPEATABLE_READ)。
494 1
|
6月前
|
Java API 微服务
Java 21 与 Spring Boot 3.2 微服务开发从入门到精通实操指南
《Java 21与Spring Boot 3.2微服务开发实践》摘要: 本文基于Java 21和Spring Boot 3.2最新特性,通过完整代码示例展示了微服务开发全流程。主要内容包括:1) 使用Spring Initializr初始化项目,集成Web、JPA、H2等组件;2) 配置虚拟线程支持高并发;3) 采用记录类优化DTO设计;4) 实现JPA Repository与Stream API数据访问;5) 服务层整合虚拟线程异步处理和结构化并发;6) 构建RESTful API并使用Springdoc生成文档。文中特别演示了虚拟线程配置(@Async)和StructuredTaskSco
778 0

热门文章

最新文章