1.自定义认证前端页面

简介: 本文介绍Spring Security前后端集成的完整流程:前端引入login.html页面,后端新增接口与配置类,通过WebSecurityConfigurerAdapter实现登录认证,包含表单登录、权限控制及CSRF关闭等关键配置,并演示启动后自动跳转登录页、验证成功访问接口的全过程。

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控制台打印

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

相关文章
|
26天前
|
Dubbo IDE API
SpringCloud工程部署启动
本文介绍SpringCloud微服务工程搭建全过程,涵盖项目创建、模块配置、数据库部署及服务远程调用实现,通过RestTemplate完成跨服务数据交互,帮助开发者掌握微服务基础架构与调用机制。
SpringCloud工程部署启动
|
26天前
|
安全 数据库 数据安全/隐私保护
1.RememberMe简介及用法
RememberMe功能并非保存用户名密码,而是通过服务端生成持久化令牌(Token),借助Cookie实现关闭浏览器后仍保持登录状态。勾选“记住我”后,系统在响应头设置remember-me令牌,后续请求自动携带该令牌验证身份。为提升安全性,可将Token存入数据库并增加二次校验机制,防止令牌泄露带来的风险。
 1.RememberMe简介及用法
|
26天前
|
Java
@Inherited
@Inherited 是 Java 中的元注解,用于修饰其他注解,使其在类继承中可被子类继承。当某注解使用 @Inherited 时,若父类应用了该注解,其子类会自动继承该注解。但仅适用于类继承,接口之间或类实现接口时均不继承注解。
|
26天前
|
安全 Java 数据安全/隐私保护
认识SpringSecurity
Spring Security 是基于过滤器链的成熟安全框架,提供认证、鉴权及防御 CSRF 等攻击的核心功能,支持多种认证方式与灵活的权限控制模型。
|
26天前
|
存储 缓存 负载均衡
Nacos注册中心
本文介绍Nacos的安装部署、服务注册与发现、负载均衡策略、权重控制、环境隔离及实例类型等内容,涵盖从入门到实战的核心知识点,帮助开发者快速掌握Nacos在微服务架构中的应用。
 Nacos注册中心
|
26天前
|
安全 Java Spring
过滤器原理分析
本文详解Spring Security过滤器链的加载原理,通过DelegatingFilterProxy、FilterChainProxy到SecurityFilterChain,揭示十五个过滤器如何自动装配并生效,帮助理解框架底层机制,为自定义认证页面打下基础。
|
26天前
|
存储 消息中间件 开发框架
应用架构图
技术架构是将业务需求转化为技术实现的关键过程,涵盖分层设计、技术选型与系统间关系梳理。本文详解单体与分布式架构,包括展现层、业务层、数据层及基础层的职责,并阐述应用内外调用关系与边界划分,助力构建清晰的技术体系。
应用架构图
|
26天前
|
存储 搜索推荐 数据库
ES分布式搜索引擎入门
本课程介绍Elasticsearch的核心概念与应用,涵盖倒排索引原理、IK分词器使用、Java Client操作索引及查询等技能,帮助学员掌握高效搜索功能开发,适用于电商等高并发场景。
65 0
ES分布式搜索引擎入门
|
26天前
|
消息中间件 算法 网络协议
7.选举机制源码分析
本文深入解析了ZooKeeper中FastLeaderElection的源码实现,涵盖其核心类结构、选举流程及关键函数。重点分析了Notification与ToSend消息机制、WorkerReceiver和WorkerSender的通信过程,并详细阐述了lookForLeader等核心方法如何通过逻辑时钟、选票PK和过半判定完成Leader选举。
 7.选举机制源码分析
|
26天前
|
安全 数据安全/隐私保护
1.什么是权限管理
本文介绍了权限管理中的两大核心机制:认证与授权。认证用于验证用户身份,确保登录安全;授权则根据角色分配权限,控制用户可访问的资源与操作。二者结合,构建起系统安全的基石,有效防止越权操作与数据泄露,保障应用稳定运行。
1.什么是权限管理

热门文章

最新文章