Spring Security 使用自定义认证页面|学习笔记

简介: 快速学习 Spring Security 使用自定义认证页面

开发者学堂课程【Spring Security知识精讲与实战演示(一)Spring Security使用自定义认证页面】学习笔记与课程紧密联系,让用户快速学习知识

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


Spring Security 使用自定义认证页面

 

Spring Security 可否使用自己的认证页面来完成认证。想要使用自己的认证页面就需要在 Spring Security 的主配置文件中提供对应的配置。

接下来在文件中配置认证信息。

image.png

首先输入 Spring Security如下图哪一个长得像认证信息。

image.png

Securityfrom-login,其他的网址没有 from-login。说明 Spring Security 内部默认 from 表单方式。使用这个标签。

image.png

标签中有很多的属性,login-page 是自己的页面;就用 login-page 来指定。Securityfrom-login login-page=“/login.jsp”这样就可以指定自己的 login,登录页面。

image.png

Login-processing-url 是来指定认证的处理器地址的。Login-processing-url=“/Login”认证必须经过处理器,需要指定一个处理器地址。但是需要注意处理器不是自己写的。之前登录的访问器地址是Login,只需要将这个 Login 地址配过来即可。

image.png

Default-target-url 是默认跳转的 URL 路径。

image.png

假如认证通过了,应该设置默认去哪个页面的地址。注意指的是默认,不会去原来需要去的地方。就是正在访问订单,发现没有登录,登录完之后需要继续去订单页面。默认指的是就在登录页面开始登陆,并不知道要去哪,这时候需要告诉文件去哪。此刻一般情况下去首页。

Default-target-url=“/index.jsp”

发现 index.不是首页,而是欢迎页面。但是看下图:在代码中只写了 pages/main.jsp,所以这是请求转发到 main.jsp。

image.png

既然有登录成功,就有认证失败的时候。

如果认证失败,authentication-failure-url 这是认证失败的地址。将这个配过来。

image.png

认证失败之后:authentication-failure-url=“/failer.jsp”直接到认证失败的页面即可。

到目前为止认证信息就配完了。

但是有些同学会有疑惑?认证有处理器,虽然没有点击 login,但是处理器需要接收认证的信息。Form 表单提交的认证信息,是from 表单的内部属性,应该与这里接收的属性名保持一致。

但是用自己设置的页面,不知道 login 的内部属性。下图是认证页面:

image.png

点击F12:

image.png

依次点开下图中的导航栏:

image.png

可以看到内部属性为 user name。密码的内部属性是 password。

这里就可以大胆的猜测后开就是依靠 user name 和 password 这两个参数运行的。那么在自定义页面的时候,只要写的和上图一致就可以了。

打开自定义页面 login.jsp。可以看到用户名为 user name,用户名为 password。与其保持一致。

image.png

但是这里可不可以不一致呢?

也是可以的。如下图中有 username-parameter=“”password-parameter=“”以上两个就指定属性名了。

自定义 login.jsp 可以随意写,但是写完之后需要在 spring-security 内指定一下。不指定就不识别。

image.png

保持一致之后,就无需重新指定了。所以认证的步骤就到此结束。

接下来配置退出登录信息。

image.png

如上图使用 security:logout,退出也需要有推出的 URL,选择logout-url=“/logout”前面标黄的 logout 也不是自己写的,是spring-security 提供的,直接拿过来使用即可。

image.png

Logout-success-url 意思是退出成功之后去哪,退出之后只能去login.jsp。现在的项目是公司的后台管理系统,后台的管理系统不登录是无法访问的。一旦退出就只能去登录页面。

image.png

以上就是退出登录的信息。

按理说退出登录配置完成之后就可以启动测试了。

首先需要来到我们自己指定的 login.jsp 页面,但是/**包括login.jsp。既然包括,那么访问 login.jsp 也需要一个 ROLE-USER角色。这时,如果不把 login.jsp 放行,过来找他的时候会被拦截,所以没有权限。没有权限会去 login.jsp。去了 login.jsp 发现也没有权限。那么启动之后会进入死循环。会出现一直找 login.jsp,但是一直没有权限。

因此需要将 login.jsp 放了。有两种方式:

1、放完资源依然能够经过后续的过滤器。

2、放完之后可以完全绕开 Spring Security 过滤器。什么都不使用了,与 Spring Security 无关。

希望后续依然经过过滤器还是不在与过滤器有关系?

Login 页面即便是匿名访问,哪怕是登录失败也要经过过滤器。因为登录失败之后要去失败的页面,这个操作是 Spring Security 做的。Spring Security 做的,又想不经过 Spring Security 的过滤器是不可能的。所以这时必须要求这个页面同意匿名访问。

现在配置让认证页面可以匿名访问。指的就是这个页面可以不登陆就访问。但是即便不登录,后续的过滤器也可以经过。

Securityintercept-url pattern,依然是login.jsp。因为是对它放行。Access=“permitALL()”/这就表示依然会经过后续所有的权限验证。

到此自定义的认证信息就配置完毕了。接下来就需要启动项目,看看效果了。启动之后看自定义的认证页面能否顺利的跳转。

发现启动之后跳转是正常的,但是页面样式出现了错误:

image.png

其实可以大胆的想象,页面是没有样式的。

image.png

上图标蓝的资源会自动向服务器发送请求,href、image、gs都可以向服务器发请求。但是只要是向服务器发请求,就会被/**拦住。这样就展示不出请求。所以需要将以上的静态资源统统释放。让他们不要来,之后来了后续的步骤就没有办法继续做了。

那么这些内容的释放和认证页面的释放有什么区别?

Login 有可能会失败,失败会去失败页面。但是静态资源不会失败,Spring Security 无需对静态资源做处理。也就是说静态资源无需再经过后续的过滤器了。这时就可以将他们彻底释放了。这就叫释放静态资源。注意 Spring MAC 也有静态资源,但是和这里的是不一样的。Spring MAC 的释放资源是不让前端控制器去拦截,但是这个释放资源是不让 intercept pattern 路径拦截。

如何释放静态资源?

image.png

Security:http

image.png

这里后面加上 pattern,加上/cass/**表示css下的所有文件以及子目录的文件所有的都拦截。拦截之后:Security=“none”意思是与Security没有关系了。

image.png

如图所示,需要加上 img、plugins.这样静态资源就都释放了。

重新启动。(最好关闭重新启动,不要刷新)看看静态资源释放之后的认证页面。(带有样式的认证页面)

下图才是自定义的认证页面。

image.png

相关文章
|
2月前
|
JSON 安全 Java
什么是JWT?如何使用Spring Boot Security实现它?
什么是JWT?如何使用Spring Boot Security实现它?
463 5
|
2月前
|
XML Java 数据格式
使用idea中的Live Templates自定义自动生成Spring所需的XML配置文件格式
本文介绍了在使用Spring框架时,如何通过创建`applicationContext.xml`配置文件来管理对象。首先,在resources目录下新建XML配置文件,并通过IDEA自动生成部分配置。为完善配置,特别是添加AOP支持,可以通过IDEA的Live Templates功能自定义XML模板。具体步骤包括:连续按两次Shift搜索Live Templates,配置模板内容,输入特定前缀(如spring)并按Tab键即可快速生成完整的Spring配置文件。这样可以大大提高开发效率,减少重复工作。
使用idea中的Live Templates自定义自动生成Spring所需的XML配置文件格式
|
2月前
|
设计模式 XML Java
【23种设计模式·全精解析 | 自定义Spring框架篇】Spring核心源码分析+自定义Spring的IOC功能,依赖注入功能
本文详细介绍了Spring框架的核心功能,并通过手写自定义Spring框架的方式,深入理解了Spring的IOC(控制反转)和DI(依赖注入)功能,并且学会实际运用设计模式到真实开发中。
【23种设计模式·全精解析 | 自定义Spring框架篇】Spring核心源码分析+自定义Spring的IOC功能,依赖注入功能
|
2月前
|
NoSQL Java Redis
Spring Boot 自动配置机制:从原理到自定义
Spring Boot 的自动配置机制通过 `spring.factories` 文件和 `@EnableAutoConfiguration` 注解,根据类路径中的依赖和条件注解自动配置所需的 Bean,大大简化了开发过程。本文深入探讨了自动配置的原理、条件化配置、自定义自动配置以及实际应用案例,帮助开发者更好地理解和利用这一强大特性。
148 14
|
2月前
|
安全 Java 数据安全/隐私保护
基于内存认证的 Spring Security
通过本文的介绍,希望您能够深入理解基于内存认证的Spring Security配置与使用方法,并能够在实际开发中灵活应用这一技术,提升应用的安全性和用户体验。
70 9
|
3月前
|
JSON 安全 算法
Spring Boot 应用如何实现 JWT 认证?
Spring Boot 应用如何实现 JWT 认证?
108 8
|
3月前
|
前端开发 Java 开发者
Spring生态学习路径与源码深度探讨
【11月更文挑战第13天】Spring框架作为Java企业级开发中的核心框架,其丰富的生态系统和强大的功能吸引了无数开发者的关注。学习Spring生态不仅仅是掌握Spring Framework本身,更需要深入理解其周边组件和工具,以及源码的底层实现逻辑。本文将从Spring生态的学习路径入手,详细探讨如何系统地学习Spring,并深入解析各个重点的底层实现逻辑。
96 9
|
3月前
|
安全 Java 应用服务中间件
如何将Spring Boot应用程序运行到自定义端口
如何将Spring Boot应用程序运行到自定义端口
111 0
|
4月前
|
前端开发 Java 数据库
SpringBoot学习
【10月更文挑战第7天】Spring学习
50 9
|
3月前
|
Java Kotlin 索引
学习Spring框架特性及jiar包下载
Spring 5作为最新版本,更新了JDK基线至8,修订了核心框架,增强了反射和接口功能,支持响应式编程及Kotlin语言,引入了函数式Web框架,并提升了测试功能。Spring框架可在其官网下载,包括文档、jar包和XML Schema文档,适用于Java SE和Java EE项目。
46 0