1.自定义认证前端页面

简介: 本文介绍Spring Security前后端整合实现登录认证的完整流程。包含前端login.html页面引入、后端HelloController接口定义及SecurityConfig安全配置类详解,重点讲解权限控制、表单登录、CSRF关闭等核心配置,并通过启动验证展示访问控制效果,帮助快速掌握基础安全防护机制。(238字)

1-前端代码

  • 📎login.html
  • 拷贝上述路径到下述位置,注意没有对应文件夹则需要手动创建

2-后端代码

1.定义接口

这里我们在原来的基础之上,继续追加一个即可,我就简单的添加一下哥哥的地址吧

package com.yzxb.SpringSecurity.web;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("demo")
public class HelloController {
    @GetMapping
    public String helloWorld() {
        return "Hello Spring Security";
    }
    // 这个是新增的
    @RequestMapping("/index")
    public String index(){
        return "油炸小波,欢迎加入IKUN大家庭";
    }
}

2.创建配置类

package com.yzxb.SpringSecurity.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
                .anyRequest().authenticated().and().formLogin()
                .loginPage("/login.html")
                .loginProcessingUrl("/doLogin")
                .defaultSuccessUrl("/demo/index")
                .failureUrl("/login.html")
                .usernameParameter("uname")
                .passwordParameter("passwd")
                .permitAll()
                .and()
            .csrf().disable();
    }
}

这个配置类非常重要,笔者带领大家单独解释一下。

(1)configure是一个链式配置,这里不用链式配置也可以,那就每一个属性设置后再http.重新开始写

(2)authenticated()表示开始权限配置,.anyRequest().authenticated()表示所有请求都需认证才可访问

(3)and()会返回HttpSecurityBuilder对象的一个子类(实际就是HttpSecurity),所以and方法相当于又回到HttpSecurity,重新开启新一轮的配置

(4)formLogin()表示开启表单登录配置,loginPage("")用来配置登录页面地址;loginProcessingUrl("")用来配置登录接口地址;defaultSuccessUrl("")用来表示登陆成功后的跳转地址;failureUrl("")表示登录失败后的跳转地址;usernameParameter、passwordParameter表示登录用户名、密码参数名称;permitAll()表示跟登录相关的接口和页面不做拦截,直接通过。

(5)csrf().disable()表示禁用CSRF防御功能,SpringSecurity自带CSRF机制,这里为了测试方便临时关闭。

3-启动验证

  • 启动工程后访问地址:http://localhost:8080/demo/index
  • 页面自动跳转至我们自己创建的登录页面,用户名:user,密码:参照idea控制台打印

  • 输入用户名、密码后跳转返回我们的接口信息

相关文章
|
7月前
|
传感器 机器学习/深度学习 算法
【UASNs、AUV】无人机自主水下传感网络中遗传算法的路径规划问题研究(Matlab代码实现)
【UASNs、AUV】无人机自主水下传感网络中遗传算法的路径规划问题研究(Matlab代码实现)
184 0
|
4月前
|
存储 缓存 运维
一场FullGC故障排查
本文记录了一次Java应用CPU使用率异常升至104%的排查过程。通过分析发现,问题由Full GC频繁触发导致,根源在于将大体积Excel数据以List<Map<String, String>>形式加载至JVM内存,造成堆内存膨胀且长期驻留,最终引发内存压力和GC风暴。结合JProfiler工具定位到大对象后,提出“治本”(移出JVM内存)与“治标”(精简数据结构)两类解决方案,并总结了从监控识别、工具分析到代码优化的完整排查思路,强调应关注JVM层面而非仅机器指标。
|
4月前
|
安全 Java Spring
2.过滤器链加载原理
本文深入解析Spring Security底层过滤机制,揭秘十五个过滤器如何通过DelegatingFilterProxy、FilterChainProxy和SecurityFilterChain自动加载与执行,帮助理解框架背后的工作原理。
 2.过滤器链加载原理
|
4月前
|
安全 Java 数据安全/隐私保护
2.OAuth2.0实战案例
本文介绍基于Spring Boot与Spring Cloud的OAuth2安全认证实现,涵盖父工程搭建、资源服务与授权服务配置,并演示授权码、简化、密码及客户端四种模式的全流程测试,实现安全的分布式系统权限控制。
|
4月前
|
Java Shell Apache
Jmeter快速入门
本文介绍了JMeter的安装与快速入门指南。首先需确保已安装JDK并配置环境变量,随后从官网或本地包下载JMeter,解压后通过双击或命令行启动。教程还演示了如何设置中文界面、创建线程组、添加HTTP取样器及监听器,并查看测试结果,帮助用户快速掌握基本使用方法。
Jmeter快速入门
|
4月前
|
测试技术 UED
发布模式
蓝绿部署通过两套系统(蓝/绿)并行,实现零停机发布与快速回滚;金丝雀发布逐步替换旧版本,降低风险;A/B测试则用于对比多版本效果,优化用户体验。三者适用场景不同,各有侧重。
发布模式
|
4月前
|
自然语言处理 fastjson Java
FastJson:大面积故障规避案例
本文记录了一次由Kotlin语法误用引发的FastJson反序列化重大故障排查过程。因将 `{}` 错误赋值给Java对象字段,导致FastJson解析时触发 `kotlin_error` 静态标记位异常,进而引发全局反序列化失败。问题根源隐蔽,影响深远,最终通过深入源码定位并修复。分享多语言混编下的踩坑经验,强调框架不可盲信,代码需严谨对待。(239字)
|
4月前
|
Java 测试技术 Linux
生产环境发布管理
本文介绍大型团队中基于自动化部署平台(CI/CD)的多环境发布流程,涵盖dev、test、pre、prod各环境职责,以及如何通过Jenkins+K8S实现高效部署与回滚,并结合Skywalking等工具进行日志追踪与问题排查。
生产环境发布管理
|
4月前
|
运维 Devops 开发工具
生产环境缺陷管理
git-poison基于go-git实现分布式bug追溯,解决多分支开发中bug漏修、漏发等协同难题,自动化卡点发布流程,降低沟通成本,提升发布安全性与效率。
生产环境缺陷管理
|
4月前
|
存储 缓存 算法
零拷贝
本文探讨文件传输的性能优化,指出传统方法因频繁的上下文切换和内存拷贝导致效率低下。通过零拷贝技术可减少系统调用与数据拷贝,提升传输性能。但大文件场景下,PageCache 可能适得其反,宜采用异步IO+直接IO方案,实现高效并发处理。