• 215.Spring Boot+Spring Security:初体验


     

    说明

    (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号到双十一都有优惠活动!




     

  • 相关阅读:
    【作业】Python面向对象
    Python使用使用第三方源(国内源:豆瓣)下载包文件 超快!!!
    【案例】Python
    【个人笔记】Python
    定义函数相关内容
    列表,for循环相关.
    while应用和函数学习
    斗地主发牌器
    字符串索引切片.
    随机生成20以内加减法,5次答题并统计正确和错误题数
  • 原文地址:https://www.cnblogs.com/springboot-wuqian/p/9940120.html
Copyright © 2020-2023  润新知