用户自定义认证

简介: 本文介绍如何自定义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控制台打印

相关文章
|
7月前
|
消息中间件 Java 数据安全/隐私保护
RabbitMQ集群部署
本文介绍RabbitMQ集群部署,包括普通模式与高可用方案。首先通过Docker搭建三节点集群,配置Erlang Cookie和rabbitmq.conf实现节点通信;接着演示队列创建、数据共享及宕机测试,发现普通模式无高可用能力;进而引入镜像模式,通过策略设置实现队列多副本,支持主从切换;最后重点介绍3.8版本后推荐的仲裁队列,其具备自动选举、强一致性等优势,配置更简便,是实现高可用的首选方案。
RabbitMQ集群部署
|
7月前
|
安全 Java 数据安全/隐私保护
通用权限管理模型
本文介绍了ACL和RBAC两大权限模型。ACL通过直接授权用户或角色访问对象,实现简单但管理复杂;RBAC则基于角色分配权限,通过用户-角色-权限三层结构提升管理效率,并衍生出支持角色继承(RBAC1)、职责分离(RBAC2)及两者结合的RBAC3模型,适用于复杂系统权限控制。
|
Java 开发者 微服务
Spring Boot 入门:简化 Java Web 开发的强大工具
Spring Boot 是一个开源的 Java 基础框架,用于创建独立、生产级别的基于Spring框架的应用程序。它旨在简化Spring应用的初始搭建以及开发过程。
1138 7
Spring Boot 入门:简化 Java Web 开发的强大工具
|
存储 前端开发 JavaScript
前后端分离如何做权限控制设计?
近几年随着react、angular、vue等前端框架兴起,前后端分离的架构迅速流行。但同时权限控制也带来了问题。 网上很多前、后端分离权限仅仅都仅仅在描述前端权限控制、且是较简单、固定的角色场景,满足不了我们用户、角色都是动态的场景。 且仅仅前端进行权限控制并不是真正意义的权限控制,它只是减少页面结构暴露、增强用户体验的功效。
前后端分离如何做权限控制设计?
|
存储 JSON 前端开发
SpringBootWeb登录认证(一)
SpringBootWeb登录认证(一)
528 2
|
XML Java Maven
Java 中的 Maven 和 Ant 的区别
【8月更文挑战第22天】
628 0
|
JSON 前端开发 Java
springBoot——Web开发简介【七】
springBoot——Web开发简介【七】
382 0
|
Java Maven 开发者
深入剖析Spring Boot在Java Web开发中的优势与应用
深入剖析Spring Boot在Java Web开发中的优势与应用
682 3
|
存储 关系型数据库 MySQL
用雪花 ID 和 UUID 做 MySQL 主键,可以吗?
用雪花 ID 和 UUID 做 MySQL 主键,可以吗?
709 0
用雪花 ID 和 UUID 做 MySQL 主键,可以吗?
|
安全 Java 数据库
SpringSecurity+JWT前后端分离架构登录认证
在SpringSecurity实现前后端分离登录token认证详解_springsecurity前后端分离登录认证-CSDN博客基础上进行重构,实现前后端分离架构登录认证,基本思想相同,借鉴开源Gitee代码进行改造,具有更好的代码规范。
640 1