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月前
|
SQL Java 测试技术
在Spring boot中 使用JWT和过滤器实现登录认证
在Spring boot中 使用JWT和过滤器实现登录认证
131 0
|
2月前
|
小程序 前端开发 Java
SpringBoot+uniapp+uview打造H5+小程序+APP入门学习的聊天小项目
JavaDog Chat v1.0.0 是一款基于 SpringBoot、MybatisPlus 和 uniapp 的简易聊天软件,兼容 H5、小程序和 APP,提供丰富的注释和简洁代码,适合初学者。主要功能包括登录注册、消息发送、好友管理及群组交流。
62 0
SpringBoot+uniapp+uview打造H5+小程序+APP入门学习的聊天小项目
|
2月前
|
缓存 前端开发 JavaScript
前后端分离 SpringBoot+Vue商城买卖系统通杀版本。大家可以参考学习一下
这篇文章介绍了一个使用SpringBoot+Vue开发的前后端分离商城系统,包括技术架构、开发环境、实现的功能以及项目截图,并展示了普通用户和商家端的功能界面。
前后端分离 SpringBoot+Vue商城买卖系统通杀版本。大家可以参考学习一下
|
2月前
|
Java Spring
【Azure Spring Cloud】Spring Cloud Azure 4.0 调用Key Vault遇见认证错误 AADSTS90002: Tenant not found.
【Azure Spring Cloud】Spring Cloud Azure 4.0 调用Key Vault遇见认证错误 AADSTS90002: Tenant not found.
|
2月前
|
Java 数据安全/隐私保护 Spring
揭秘Spring Boot自定义注解的魔法:三个实用场景让你的代码更加优雅高效
揭秘Spring Boot自定义注解的魔法:三个实用场景让你的代码更加优雅高效
|
2月前
|
JSON 安全 Java
|
2月前
|
Java Spring 安全
Spring 框架邂逅 OAuth2:解锁现代应用安全认证的秘密武器,你准备好迎接变革了吗?
【8月更文挑战第31天】现代化应用的安全性至关重要,OAuth2 作为实现认证和授权的标准协议之一,被广泛采用。Spring 框架通过 Spring Security 提供了强大的 OAuth2 支持,简化了集成过程。本文将通过问答形式详细介绍如何在 Spring 应用中集成 OAuth2,包括 OAuth2 的基本概念、集成步骤及资源服务器保护方法。首先,需要在项目中添加 `spring-security-oauth2-client` 和 `spring-security-oauth2-resource-server` 依赖。
42 0
|
2月前
|
消息中间件 安全 Java
Spring Boot 基于 SCRAM 认证集成 Kafka 的详解
【8月更文挑战第4天】本文详解Spring Boot结合SCRAM认证集成Kafka的过程。SCRAM为Kafka提供安全身份验证。首先确认Kafka服务已启用SCRAM,并准备认证凭据。接着,在`pom.xml`添加`spring-kafka`依赖,并在`application.properties`中配置Kafka属性,包括SASL_SSL协议与SCRAM-SHA-256机制。创建生产者与消费者类以实现消息的发送与接收功能。最后,通过实际消息传递测试集成效果与认证机制的有效性。
|
2月前
|
监控 安全 Java
【开发者必备】Spring Boot中自定义注解与处理器的神奇魔力:一键解锁代码新高度!
【8月更文挑战第29天】本文介绍如何在Spring Boot中利用自定义注解与处理器增强应用功能。通过定义如`@CustomProcessor`注解并结合`BeanPostProcessor`实现特定逻辑处理,如业务逻辑封装、配置管理及元数据分析等,从而提升代码整洁度与可维护性。文章详细展示了从注解定义、处理器编写到实际应用的具体步骤,并提供了实战案例,帮助开发者更好地理解和运用这一强大特性,以实现代码的高效组织与优化。
57 0
|
3月前
|
安全 Java 数据库
三更草堂 Spring Security学习总结(思路整理)
Spring Security学习总结(思路整理)
下一篇
无影云桌面