用户自定义认证

简介: 本文介绍如何自定义Spring Security认证前端页面,包含login.html前端代码配置与后端接口及安全策略设置,通过SecurityConfig实现表单登录、路径放行与跳转控制,最终实现认证访问。

自定义认证前端页面

1-前端代码

login.html(2 KB)拷贝上述路径到下述位置,注意没有对应文件夹则需要手动创建2-后端代码1.定义接口这里我们在原来的基础之上,继续追加一个即可,我就简单的添加一下哥哥的地址吧

Java

运行代码复制代码

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

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.创建配置类

Java

运行代码复制代码

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大家庭";

   }

}

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

相关文章
|
Java 开发者 微服务
Spring Boot 入门:简化 Java Web 开发的强大工具
Spring Boot 是一个开源的 Java 基础框架,用于创建独立、生产级别的基于Spring框架的应用程序。它旨在简化Spring应用的初始搭建以及开发过程。
935 7
Spring Boot 入门:简化 Java Web 开发的强大工具
|
存储 JSON 前端开发
SpringBootWeb登录认证(一)
SpringBootWeb登录认证(一)
353 2
|
Java API 数据库
详细介绍如何使用Spring Boot简化Java Web开发过程。
Spring Boot简化Java Web开发,以轻量级、易用及高度可定制著称。通过预设模板和默认配置,开发者可迅速搭建Spring应用。本文通过创建RESTful API示例介绍其快速开发流程:从环境准备、代码编写到项目运行及集成数据库等技术,展现Spring Boot如何使Java Web开发变得更高效、简洁。
355 1
|
XML Java Maven
Java 中的 Maven 和 Ant 的区别
【8月更文挑战第22天】
559 0
|
存储 前端开发 JavaScript
前后端分离如何做权限控制设计?
近几年随着react、angular、vue等前端框架兴起,前后端分离的架构迅速流行。但同时权限控制也带来了问题。 网上很多前、后端分离权限仅仅都仅仅在描述前端权限控制、且是较简单、固定的角色场景,满足不了我们用户、角色都是动态的场景。 且仅仅前端进行权限控制并不是真正意义的权限控制,它只是减少页面结构暴露、增强用户体验的功效。
前后端分离如何做权限控制设计?
|
JSON 前端开发 Java
springBoot——Web开发简介【七】
springBoot——Web开发简介【七】
336 0
|
Java Maven 开发者
深入剖析Spring Boot在Java Web开发中的优势与应用
深入剖析Spring Boot在Java Web开发中的优势与应用
601 3
|
存储 关系型数据库 MySQL
用雪花 ID 和 UUID 做 MySQL 主键,可以吗?
用雪花 ID 和 UUID 做 MySQL 主键,可以吗?
625 0
用雪花 ID 和 UUID 做 MySQL 主键,可以吗?
|
安全 Java 数据库
SpringSecurity+JWT前后端分离架构登录认证
在SpringSecurity实现前后端分离登录token认证详解_springsecurity前后端分离登录认证-CSDN博客基础上进行重构,实现前后端分离架构登录认证,基本思想相同,借鉴开源Gitee代码进行改造,具有更好的代码规范。
583 1
|
存储 前端开发 Java
Javaweb之SpringBootWeb案例之登录校验功能的详细解析
Javaweb之SpringBootWeb案例之登录校验功能的详细解析
263 0