Spring Security Form表单认证代码实例
Spring Security Form表单认证
Spring Security中,常见的认证方式可以分为HTTP层面和表单层面,如下:
- HTTP基本认证
- Form表单认证
- HTTP摘要认证
Spring Security Form表单实现实例:
1、pom依赖
1 <!-- 引入 security-->
2 <dependency>
3 <groupId>org.springframework.boot</groupId>
4 <artifactId>spring-boot-starter-security</artifactId>
5 </dependency>
2、配置类
登录成功时,defaultSuccessUrl配置页面,successForwardUrl通过接口重定向到页面。
1 import org.springframework.security.config.annotation.web.builders.HttpSecurity;
2 import org.springframework.security.config.annotation.web.builders.WebSecurity;
3 import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
4 import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
5
6 /**
7 * @author:
8 * @date: 2023/1/6
9 * @description:
10 */
11 @EnableWebSecurity
12 public class SecurityConfig extends WebSecurityConfigurerAdapter {
13
14 /**
15 * configure
16 *
17 * @param [web]
18 * @return void
19 * @description 配置请求哪些资源时,不需要认证
20 *
21 */
22 @Override
23 public void configure(WebSecurity web) throws Exception {
24 super.configure(web);
25 web.ignoring()
26 .antMatchers("/js/**", "/css/**");
27 }
28
29 /**
30 * configure
31 *
32 * @param [http]
33 * @return void
34 * @description
35 * 使用defaultSuccessUrl,可以不配置successForwardUrl
36 */
37 @Override
38 protected void configure(HttpSecurity http) throws Exception {
39 // 配置表单认证方式
40 http.authorizeRequests()
41 //任何请求都需要被认证,必须登录后才能访问
42 .anyRequest()
43 .authenticated()
44 .and()
45 // 开启表单认证
46 .formLogin()
47 //登录页面配置
48 .loginPage("/login.html")
49 .permitAll()
50 //登录成功后,指定跳转到首页(true)
51 // .defaultSuccessUrl("/index.html", true)
52 //post请求的登录接口
53 .loginProcessingUrl("/login")
54 .successForwardUrl("/success")
55 //登录失败,用户名或密码错误
56 .failureUrl("/error.html")
57 //登录时,携带的用户名和密码的表单的键 login.html中的表单
58 .usernameParameter("username")
59 .passwordParameter("password")
60 .and()
61 //注销接口
62 .logout()
63 //url
64 .logoutUrl("/logout")
65 //注销成功后跳转的页面
66 .logoutSuccessUrl("/login.html")
67 .permitAll()
68 //删除自定义的cookie
69 .deleteCookies("myCookie")
70 .and()
71 //关闭csrf防护功能(跨站请求伪造),否则登录不成功
72 .csrf()
73 .disable();
74 }
75 }
3、control
1 import org.springframework.stereotype.Controller;
2 import org.springframework.web.bind.annotation.GetMapping;
3 import org.springframework.web.bind.annotation.RequestMapping;
4 import org.springframework.web.bind.annotation.ResponseBody;
5
6 /**
7 * @description:
8 */
9 @Controller
10 public class SecurityController {
11
12 @GetMapping("hello")
13 @ResponseBody
14 public String hello(){
15 return "hello security";
16 }
17
18 @RequestMapping("success")
19 public String success(){
20 return "redirect:index.html";
21 }
22 }
4、html代码
login.html
1 <!DOCTYPE html>
2 <html lang="en">
3 <head>
4 <meta charset="UTF-8">
5 <meta name="viewport" content="width=device-width, initial-scale=1.0">
6 <title>Document</title>
7 </head>
8 <body>
9 <div class="main">
10 <form class="login-form" method="post" action="/login">
11 用户名: <input type="text" autocomplete="off"
12 placeholder="用户名" name="username" required/><br>
13 密码: <input type="password"
14 autocomplete="off" placeholder="登录密码" name="password" required/><br>
15 <button type="submit" class="enter-btn">登录</button>
16 </form>
17 </div>
18 </body>
19 </html>
index.html
1 <!DOCTYPE html>
2 <html lang="en">
3 <head>
4 <meta charset="UTF-8">
5 <title>首页</title>
6 </head>
7 <body>
8 <h3>Spring Security首页,欢迎!</h3>
9
10 </body>
11 </html>
error.html
1 <!DOCTYPE html>
2 <html lang="en">
3 <head>
4 <meta charset="UTF-8">
5 <title>Title</title>
6 </head>
7 <body>
8 <h3>登录失败!!!</h3>
9 </body>
10 </html>
5、表单登录
默认用户名:user
密码:项目启动后,控制台打印。
6、项目目录结构
Spring Security Form表单认证代码实例的更多相关文章
- C#之Form表单认证
原文地址: https://blog.csdn.net/chadcao/article/details/7859394 ASP.NET的安全认证,共有“Windows”.“Form”.“Passpor ...
- spring mvc form表单提交乱码
spring mvc form表单submit直接提交出现乱码.导致乱码一般是服务器端和页面之间编码不一致造成的.根据这一思路可以依次可以有以下方案. 1.jsp页面设置编码 <%@ page ...
- php laravel加密 form表单认证 laravel分页
use Illuminate\Support\Facades\Crypt; echo Crypt::encrypt(123); //加密echo "<br>";//解密 ...
- 表单验证代码实例:jquery.validate.js表单验证插件
jquery.validate.js是JQuery旗下的一个验证插件,借助JQuery的优势,我们可以迅速验证一些常见的输入,并且可以自己扩充自己的验证方法.使用前请先下载必要的JQuery插件:jq ...
- Django 中的Form表单认证
一.Form表单 1.1 Form的几个功能 验证用户数据(显示错误信息) 初始化页面显示内容 HTML Form提交保留上次提交数据 生成HTML标签 1.2 创建表单类Form 1. 创建 ...
- spring mvc Controller与jquery Form表单提交代码demo
1.JSP表单 <% String basePath = request.getScheme() + "://" + request.getServerName() +&qu ...
- spring:设置映射访问路径 或 xml配置访问路径 (spring mvc form表单)
项目hello, 在src/main/java下面建一个目录: charpter2 一.xml配置访问路径 web.xml <web-app> <display-name>Ar ...
- Django之form表单认证
Model常用操作: - 参数:filter 三种传参方式 - all(得到的是列表),values(字典),values_list(元祖) [obj(id,name,pwd,email),obj(i ...
- spring security 表单认证的流程
spring security表单认证过程 表单认证过程 Spring security的表单认证过程是由org.springframework.security.web.authentication ...
- struts2总结四:Action与Form表单的交互
struts2 Action获取表单数据的方式有三种:1.通过属性驱动的方式.2.模型驱动方式.3.使用多个model对象的属性. 1.通过属性驱动式 首先在jsp里面编写form表单的代码如下: & ...
随机推荐
- 修改服务器ssh端口
最近,访问公司虚拟机都需要通过堡垒机才能访问了,觉得麻烦.要想不受该规则限制,也有办法,可以通过修改虚拟机ssh端口解决. 下面做个介绍. 1. 通过堡垒机登录虚拟机 2. 修改虚拟机ssh端口 编辑 ...
- 执行xxx.sh脚本的两种方式
因公司测试环境的登录模式有2种,大佬们直接写了个脚本完成一键切换,看了其中的脚本文件,其中出现了send "sh out.sh\r":一直疑惑这里的sh out.sh的意思...查 ...
- docker支持ipv6
方法 方法一.Pv6地址 不为容器中的服务特别分配IPv6地址. 只要Docker把外部的IPv6地址端口映射到容器的IPv4端口上,随后访问主机的IPv6相应端口即可. 方法二.为Docker网络分 ...
- Docker | 专栏文章整理🎉🎉
Docker Docker系列文章基本已经更新完毕,这是我从去年的学习笔记中整理出来的. 笔记稍微有点杂乱.随意,把它们整理成文章花费了不少力气.整理的过程也是我的一个再次学习的过程,同时也是为了方便 ...
- XTDrone和PX4学习期间问题记录(一)
XTDrone和PX4学习期间问题记录(一) Written By PiscesAlpaca 前言: 出现问题可以去官方网站http://ceres-solver.org/index.html查看文档 ...
- Java 中九种 Map 的遍历方式,你一般用的是哪种呢?
日常工作中 Map 绝对是我们 Java 程序员高频使用的一种数据结构,那 Map 都有哪些遍历方式呢?这篇文章阿粉就带大家看一下,看看你经常使用的是哪一种. 通过 entrySet 来遍历 1.通过 ...
- dom xss->半自动化
前几天看了两篇文章,觉得很不错,写一笔,就当笔记记录. 第一篇文章:https://jinone.github.io/bugbounty-dom-xss/ 作者写了自己通过自动化挖dom xss,差不 ...
- 解决windows installation failed! Error: 无法访问 Windows Installer 服务
这种错误,是因为没有开启winodws Installer这个服务导致的,在开始菜单搜索"服务",找到windows Installer 这个服务,右键--属性--把启动类型 选成 ...
- 【SQL基础】多表查询:子查询、连接查询(JOIN)、组合查询(UNION集合运算)
〇.概述 1.内容 JOIN表连接(内连接INNER JOIN/JOIN)(外连接LEFT/RIGHT (OUTER) JOIN) 集合运算-UNION联合 2.建表语句 drop table if ...
- Jvm上如何运行其他语言?JSR223规范最详细讲解
一 在Java的平台里,其实是可以执行其他的语言的.包括且不仅限于jvm发展出来的语言. 有的同学可能会说,在java项目里执行其他语言,这不吃饱了撑着么,java体系那么庞大,各种工具一应俱全,放着 ...