说明

(1)JDK版本:1.8

(2)Spring Boot 2.0.6

(3)Spring Security 5.0.9

需求缘起

在上一篇文章中,我们对于Spring Security有了一个基本的了解,那么重点是在Spring Boot中如何使用Spring Security呢?

一、Spring Security初体验

这里我们通过简单的集成方式来对Spring Security有一个基本的认知。

1.1 创建项目

创建一个项目,取名为:springboot2-springSecurity01

1.2 添加依赖

在pom.xml文件中添加依赖,主要是springboot parent starter和-start-web以及spring security的依赖。

spring-boot-starter-parent依赖:

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.6.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

Spring Security和-web依赖:

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>         <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
</dependency>

1.3 创建Spring Boot启动类

使用@SpringBootApplication创建Spring Boot启动类,如下代码:

package com.kfit;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication
public class Springboot2SpringSecurity01Application {     public static void main(String[] args) {
        SpringApplication.run(Springboot2SpringSecurity01Application.class, args);
    }
}

如果使用的STS开发工具的话,上面的1.2和1.3都可以跳过。

1.4 编写Controller

随意编写一个测试Controller,这里取名为HelloController,如下示例代码:

package com.kfit.demo.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; @RestController
@RequestMapping("/hello")
public class HelloController {     @GetMapping
    public String getWelcomeMsg() {       
        return "Hello,Spring Security";
    }
}

1.5 启动测试

启动应用程序,然后进行测试:

(1)访问如下地址:

http://localhost:8080/hello

如果接口能正常访问,那么应该显示“Hello,SpringSecurity”,但是我们是没法正常访问的,出现了下图的身份验证输入框:

这是因为在SpringBoot中,默认的Spring Security就是生效了的,此时的接口都是被保护的,我们需要通过验证才能正常的访问。 Spring Security提供了一个默认的用户,用户名是user,而密码则是启动项目的时候自动生成的。

我们查看项目启动的日志,会发现如下的一段Log:

Using generated securitypassword: 74adcd57-f0be-46c3-87cc-6d9d712cbc27

我们直接用user和启动日志中的密码进行登录,登录成功后,就跳转到了接口正常调用的页面了。

二、小技巧

2.1 关闭验证功能

如果一开始不想使用验证功能,怎么关闭呢?

在配置文件中配置

security.basic.enabled=false

的方式,在5.x版本之后提示过时了,那么应该怎么办呢?

方式一:在启动类中排除

SecurityAutoConfiguration,

如下示例代码:

@SpringBootApplication(exclude=SecurityAutoConfiguration.class)
public class Springboot2SpringSecurity01Application {     public static void main(String[] args) {
        SpringApplication.run(Springboot2SpringSecurity01Application.class, args);
    }
}

另外在Spring Boot 2.x中下面配置项被废弃了:

security.basic.authorize-mode
security.basic.enabled
security.basic.path
security.basic.realm
security.enable-csrf
security.headers.cache
security.headers.content-security-policy
security.headers.content-security-policy-mode
security.headers.content-type
security.headers.frame
security.headers.hsts
security.headers.xss
security.ignored
security.require-ssl
security.sessions

2.2 自定义用户名和密码

上面的用户名是默认的,密码是随时生成的,实在是不方便,那么怎么自定义用户名和密码呢,只需要在配置文件application.properties文件中添加如下配置:

spring.security.user.name = admin
spring.security.user.password = 123456

历史文章

214. Spring Security:概述

Spring Security更新视频:

9.Boot+Security:动态加载角色
10.Boot+Security:原理1
11.Boot+Security:自定义Filter
12.Boot+Security:页面白名单和获取登录信息
13.Boot+Security:基于URL动态权限n种方案
14.Boot+Security:基于URL动态权限:准备工作
15.Boot+Security:基于URL动态权限:扩展access()的SpEL表达式

à悟空学院http://t.cn/Rg3fKJD

学院中有Spring Boot相关的课程!点击「悟空学院」进行查看!

悟空学院的所有教程从11月10号到双十一都有优惠活动!




 

215.Spring Boot+Spring Security:初体验的更多相关文章

  1. Spring boot集成redis初体验

    pom.xml: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="ht ...

  2. 255.Spring Boot+Spring Security:使用md5加密

    说明 (1)JDK版本:1.8 (2)Spring Boot 2.0.6 (3)Spring Security 5.0.9 (4)Spring Data JPA 2.0.11.RELEASE (5)h ...

  3. 256.Spring Boot+Spring Security: MD5是加密算法吗?

    说明 (1)JDK版本:1.8 (2)Spring Boot 2.0.6 (3)Spring Security 5.0.9 (4)Spring Data JPA 2.0.11.RELEASE (5)h ...

  4. Spring Boot+Spring Security:获取用户信息和session并发控制

    说明 (1)JDK版本:1.8(2)Spring Boot 2.0.6(3)Spring Security 5.0.9(4)Spring Data JPA 2.0.11.RELEASE(5)hiber ...

  5. Spring Cloud 负载均衡初体验

    目录 服务搭建 1.注册中心--Eureka Server 2.服务提供方--Service Provider 3.服务消费方--Service Consumer 服务消费 Feign 与断路器 Hy ...

  6. 基于Spring Boot+Spring Security+JWT+Vue前后端分离的开源项目

    一.前言 最近整合Spring Boot+Spring Security+JWT+Vue 完成了一套前后端分离的基础项目,这里把它开源出来分享给有需要的小伙伴们 功能很简单,单点登录,前后端动态权限配 ...

  7. Spring Boot+Spring Security+JWT 实现 RESTful Api 认证(二)

    Spring Boot+Spring Security+JWT 实现 RESTful Api 认证(二) 摘要 上一篇https://javaymw.com/post/59我们已经实现了基本的登录和t ...

  8. Spring boot +Spring Security + Thymeleaf 认证失败返回错误信息

    [Please make sure to select the branch corresponding to the version of Thymeleaf you are using] Stat ...

  9. [权限管理系统(四)]-spring boot +spring security短信认证+redis整合

    [权限管理系统]spring boot +spring security短信认证+redis整合   现在主流的登录方式主要有 3 种:账号密码登录.短信验证码登录和第三方授权登录,前面一节Sprin ...

随机推荐

  1. cms建站

    1. 搭建php环境 phpnow软件安装(下载地址:  http://www.phpnow.org) 注意如果安装失败,请用以下解决办法: 1.请使用命令提示符(管理员)2.打开后进入PHPnow目 ...

  2. Python:从入门到实践--第八章-函数-练习

    #.消息:编写一个名为display_message()的函数,它打印一个句子,指出你在本章学的是什么. #调用这个函数,确认显示的消息无误 def display_message(name): pr ...

  3. java 环境的安装、设置免密登陆、进行hadoop安装、关闭防火墙

    1.去这个网站下载对应的版本:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html我这 ...

  4. ACM山东工商 数据结构与算法 第3章 双向栈的操作

    #include <stdio.h>#include <stdlib.h> #define SIZE   20//1左 偶 typedef struct hold{ int s ...

  5. XSS学习(三)挖掘思路

    HTML标签之间 <div id="body"> [输出点] </div> payload:<script>alert(1)</scrip ...

  6. 如何处理Excel空行问题

    在操作excel的时候, 可能会出现很多的无效数据行. 下面是一个我的简单处理方式 public static bool DataSetToExcel(DataSet dataSet, string ...

  7. 13. Forensics (取证 4个)

    Maltego是一个取证和数据挖掘应用程序. 它能够查询各种公共数据源,并以图形方式描绘人员,公司,网站和文档等实体之间的关系. Maltego也是一个开源智能,但不是开源软件. Helix The ...

  8. (转)volatile 的理解

    对于(volatile unsigned char *)0x20我们再分析一下,它是由两部分组成: 1) (unsigned char *)0x20,0x20只是个值,前面加(unsigned cha ...

  9. js入门关于js‘i++’‘++i’和‘i--’‘--i’计算的问题

    一,i++和++i; i++是先赋值在运算,++i是先运算在赋值: 例如:var a=1 a++:在运算时是按照1计算的:但在下面再次出现时是按照2进行运算: ++a:在运算时是按照2计算的:在下面再 ...

  10. JavaScript中的ononline事件和onoffline事件

    关于这个时间的描述到处都有,但基本上都是说离线在线什么的我一下子还没反应过来.后再在这里看到了一句话:"断开网络再联网试试,就可以看到连线的提示."这才反应过来,原来指的是网络状态 ...