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表单认证代码实例的更多相关文章

  1. C#之Form表单认证

    原文地址: https://blog.csdn.net/chadcao/article/details/7859394 ASP.NET的安全认证,共有“Windows”.“Form”.“Passpor ...

  2. spring mvc form表单提交乱码

    spring mvc form表单submit直接提交出现乱码.导致乱码一般是服务器端和页面之间编码不一致造成的.根据这一思路可以依次可以有以下方案. 1.jsp页面设置编码 <%@ page ...

  3. php laravel加密 form表单认证 laravel分页

    use Illuminate\Support\Facades\Crypt; echo Crypt::encrypt(123); //加密echo "<br>";//解密 ...

  4. 表单验证代码实例:jquery.validate.js表单验证插件

    jquery.validate.js是JQuery旗下的一个验证插件,借助JQuery的优势,我们可以迅速验证一些常见的输入,并且可以自己扩充自己的验证方法.使用前请先下载必要的JQuery插件:jq ...

  5. Django 中的Form表单认证

    一.Form表单   1.1 Form的几个功能 验证用户数据(显示错误信息) 初始化页面显示内容 HTML Form提交保留上次提交数据 生成HTML标签   1.2 创建表单类Form 1. 创建 ...

  6. spring mvc Controller与jquery Form表单提交代码demo

    1.JSP表单 <% String basePath = request.getScheme() + "://" + request.getServerName() +&qu ...

  7. spring:设置映射访问路径 或 xml配置访问路径 (spring mvc form表单)

    项目hello, 在src/main/java下面建一个目录: charpter2 一.xml配置访问路径 web.xml <web-app> <display-name>Ar ...

  8. Django之form表单认证

    Model常用操作: - 参数:filter 三种传参方式 - all(得到的是列表),values(字典),values_list(元祖) [obj(id,name,pwd,email),obj(i ...

  9. spring security 表单认证的流程

    spring security表单认证过程 表单认证过程 Spring security的表单认证过程是由org.springframework.security.web.authentication ...

  10. struts2总结四:Action与Form表单的交互

    struts2 Action获取表单数据的方式有三种:1.通过属性驱动的方式.2.模型驱动方式.3.使用多个model对象的属性. 1.通过属性驱动式 首先在jsp里面编写form表单的代码如下: & ...

随机推荐

  1. golang中的错误处理

    0.1.索引 https://waterflow.link/articles/1666716727236 1.panic 当我们执行panic的时候会结束下面的流程: package main imp ...

  2. 嵌入式-C语言基础:字符串拼接函数strcat

    #include<stdio.h> #include <string.h> //实现字符串拼接 char * mystrcat(char * dest,char * src) ...

  3. 棋盘覆盖(java实现)

    棋盘覆盖 问题描述 在一个2k×2k 个方格组成的棋盘中,恰有一个方格与其它方格不同,称该方格为一特殊方格,且称该棋盘为一特殊棋盘.在棋盘覆盖问题中,要用图示的4种不同形态的L型骨牌覆盖给定的特殊棋盘 ...

  4. Rust构建环境搭建

    ###安装涉及的概念rustup : 安装rust和管理版本的工具,当前rust尚处于发展阶段,存在三种类型的版本,稳定版.测试版.每日构建版本,使用rustup可以在这三种的版本之间切换,默认是稳定 ...

  5. 有关二级指针char **p 的问题

    int main() { char *str[] = {"welcome", "to", "Fortemdia", "Nanjin ...

  6. Bugku md5 collision

    题目名字都叫md5碰撞,那就肯定和md5碰撞脱不了关系了 打开题目,首先让我们输入a 行吧,随意post一个a=1进去 结果提示flase 这里应该是有特殊值,我们找找看 查看源码,抓包 没找到 试试 ...

  7. Mybatis-plus - ActiveRecord 模式CRUD

    什么是ActiveRecord模式 ActiveRecord 也属于 ORM 层,由 Rails 最早提出,遵循标准的 ORM 模型:表映射到记录,记录映射到对象,字段映射到对象属性.配合遵循的命名和 ...

  8. Codeforces Round #836 (Div. 2) A-D

    比赛链接 A 题意 给一个字符串 \(s\) ,对其加倍,即每个字符后面追加一个相同字符. 加倍后可以重排列,要求构造一个回文串. 题解 知识点:构造. 既然可以重排列了,那顺序是随意的了,直接翻转加 ...

  9. python实现AES加密解密

    1. 前言 AES是一种对称加密,所谓对称加密就是加密与解密使用的秘钥是一个. 之前写过一片关于python AES加密解密的文章,但是这里面细节实在很多,这次我从 参数类型.加密模式.编码模式.补全 ...

  10. 数据结构学习——BST删除特定节点

    BST删除特定节点 前言 一个平常的星期三晚上,一节通选课中,在老师放的视频和极寒空调的折磨之下,想着做点别的什么的我,打开了博客园.想起来做题下午数据结构课中老师最后在讲BST删除节点的操作,并且以 ...