自定义认证前端页面

简介: 本文介绍Spring Security基础配置:前端需手动创建文件夹并拷贝路径;后端新增接口与登录配置,通过SecurityConfig实现请求认证、表单登录及跳转控制,禁用CSRF。启动后访问/demo/index将跳转至登录页,输入默认用户名密码即可查看返回信息。(238字)

1-前端代码

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

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

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

相关文章
|
2月前
|
jenkins 持续交付 调度
项目《神领物流》
本项目为自研物流系统,基于微服务架构实现智能调度与管控,涵盖用户、快递员、司机多端应用。采用GitFlow管理代码,通过Jenkins实现持续集成,提交后自动构建,保障开发效率与系统稳定,类似顺丰速运模式,面向C端提供高效快递服务。(239字)
|
2月前
|
缓存 数据建模 文件存储
EFC&CTO:缓存引发数据不一致问题排查与深度解析
EFC是NAS自研分布式文件系统客户端,近期升级支持多客户端分布式缓存,兼容NAS、CPFS、OSS。因未适配CTO测试,发版时出现data mismatch。排查发现非单纯缓存读旧数据问题,通过NFS挂载验证确认文件系统数据被破坏,挑战超出预期。
|
2月前
|
设计模式 Java 程序员
推荐书籍
推荐多本Java经典书籍:《Head First Java》适合入门,《Java核心技术》深入巩固基础,《Java编程思想》整合设计模式,适合进阶。并发方面有《Java并发编程之美》等,JVM推荐《深入理解Java虚拟机》与《实战JVM》。体系全面,适合不同阶段学习。
|
2月前
|
负载均衡 算法 Java
微服务篇
SpringBoot核心原理是自动装配,通过@SpringBootApplication注解实现配置类、组件扫描与自动配置。其启动流程包括环境初始化、上下文创建与自动化配置。常用起步依赖如web、redis等;支持properties、YAML等配置文件,后加载的覆盖先加载的。项目通过Feign、Ribbon实现服务通信与负载均衡,使用Nacos做注册与配置中心,Sentinel或Hystrix实现限流熔断,Gateway实现网关限流与CORS跨域控制,结合Spring Cloud五大组件构建微服务架构。
|
2月前
|
消息中间件 存储 缓存
MQ篇
本项目采用RabbitMQ、Kafka和EMQ实现异步通信与数据采集。RabbitMQ用于服务解耦、流量削峰,支持多种消息模式与高可用集群;Kafka处理高吞吐用户行为数据,保障实时推荐与数据同步;EMQ基于MQTT协议实现物联网设备与服务器间可靠通信,支持QoS分级与延迟发布,确保消息不丢不重。三者协同提升系统性能与稳定性。
|
2月前
|
Dubbo Java 关系型数据库
入门运行Soul
Soul 是基于 WebFlux 的高性能响应式 API 网关,支持 Dubbo、Spring Cloud、HTTP 等多协议,具备插件化、热插拔、动态流量控制、鉴权限流等丰富功能,支持 A/B 测试与蓝绿发布。依托 MySQL + JDK 1.8+ 环境,通过 WebSocket 等实现配置秒级同步,架构灵活易扩展,助力微服务高效治理。
|
2月前
|
缓存 开发工具 git
QLExpress使用及源码分析
QLExpress是阿里开源的轻量级规则引擎,支持通过注解与YAML配置实现业务逻辑与代码解耦。结合实体别名、接口规则定义及脚本化表达式,实现动态计算与判断,如用户年龄判断、BMI计算等。支持AST语法树解析与上下文绑定,提供灵活的二次扩展能力,适用于复杂业务场景的延迟执行与缓存优化。
|
2月前
|
安全 Java 数据安全/隐私保护
通用权限管理模型
本文介绍ACL与RBAC两大核心权限模型。ACL通过用户/角色直接授权,简单直观;RBAC则基于角色分配权限,支持角色继承、职责分离等机制,更适用于复杂系统。了解模型结构有助于构建清晰的权限体系。
|
2月前
|
存储 缓存 安全
Java基础篇
本文简要介绍了Java核心知识,涵盖final关键字、重载与重写、==与equals区别、反射机制及应用、String类对比、集合框架、线程安全类、ArrayList与LinkedList差异、HashMap原理及扩容、ConcurrentHashMap实现、线程创建与线程池使用、JVM组成与运行时数据区、类加载器与双亲委派模型、Stream流及JDK8新特性等内容,系统梳理了Java开发中的重点概念与实战应用。
|
2月前
|
存储 SQL 关系型数据库
MySQL篇
MySQL查询语句书写顺序为:SELECT、FROM、JOIN、WHERE、GROUP BY、HAVING、ORDER BY、LIMIT;实际执行顺序则不同,从FROM开始,最后执行SELECT和LIMIT。多表查询主要通过内连接(显式/隐式)和外连接(左、右)实现。内连接仅返回匹配行,外连接保留驱动表全部记录。CHAR固定长度,VARCHAR可变长度;索引类型包括单列、组合及全文索引,底层多用B+树结构。InnoDB使用聚簇索引,数据存于主键索引叶节点;MyISAM为非聚簇索引,叶节点存指针。查询非主键索引需回表二次查找,覆盖索引可避免回表提升性能。