• 【Spring Security 系列】(一)入门篇,快速搭建一个安全Web服务


    Spring Security

    简介

    官方主页:https://spring.io/projects/spring-security

    Spring Security 是一个功能强大且高度可定制的身份验证访问控制框架。 它是保护基于 Spring 的应用程序的事实标准。

    Spring Security 是一个专注于为 Java 应用程序提供身份验证和授权的框架。像所有 Spring 项目一样,Spring Security 的真正强大之处在于它可以轻松扩展以满足自定义需求。

    功能列表

    • 对身份验证和授权的全面且可扩展的支持
    • 防止会话固定、点击劫持、跨站点请求伪造等攻击
    • Servlet API 集成
    • 与 Spring Web MVC 的可选集成

    入门案例

    1. 创建 SpringBoot 项目

    一个 pom,一个 Application 启动类,相信难不倒你,跳过。

    2. 引入依赖

    版本号继承自SpringBoot。

            <dependency>
                <groupId>org.springframework.bootgroupId>
                <artifactId>spring-boot-starter-webartifactId>
            dependency>
            <dependency>
                <groupId>org.springframework.bootgroupId>
                <artifactId>spring-boot-starter-securityartifactId>
            dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    3. 编写配置

    • 配置类
      实际上并不需要自己编写配置,SpringBoot自动配置已经帮我们做好了一切。
    • application.yml
      服务端口:8080;增加了一些debug日志,便于定位问题。
    server:
      port: 8080
    
    logging:
      level:
        root: info
    #    org.springframework.security.web: debug
        org.springframework.security.web.FilterChainProxy: debug #过滤器执行顺序
        org.springframework.security.web.access.expression.ExpressionBasedFilterInvocationSecurityMetadataSource: info #权限配置
        org.springframework.security.access.method.DelegatingMethodSecurityMetadataSource: info #权限配置
        org.springframework.security.config.annotation.authentication.configuration.AuthenticationConfiguration: debug
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 首页 index.html
      用户登录成功后会跳转到首页,为了防止404,也便于测试登出。首页存放在 src/resources/static/index.html
    <html>
        <head>
            <meta charset="utf-8">
            <title>首页title>
        head>
        <body>
            <h5>登录成功h5>
            <div>
                <form method="get" action="/logout">
                    <button type="submit">Logoutbutton>
                form>
            div>
        body>
    html>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    4. 启动

    运行 启动类

    5. 测试

    1. 访问登录页
      http://localhost:8080/login
      若访问其他页面,当用户未登录时,则会重定向到登录页
      在这里插入图片描述

    默认用户为:user密码则时会打印在启动日志中,如图:
    在这里插入图片描述
    输入用户信息登录,登录成功后会重定向到首页。
    2. 首页
    首页就是我们最开始写的 index.html 页面。
    在这里插入图片描述
    3. 登出
    点击 Logout 按钮,会跳转到一个登出确认页面

    在这里插入图片描述
    点击 Log Out,此时才是真正的退出。退出后,会重定向登录页,也会有相应的提示。
    在这里插入图片描述

    6. 配置用户信息

    前面在登录时,使用的用户密码是框架默认设置的,并不是很友好,实际上,可以在 application.yml 自定义,如下,指定用户为user,密码为123456。

    spring:
      security:
        user:
          name: user
          password: 123456
    
    • 1
    • 2
    • 3
    • 4
    • 5

    end

    后续会继续深挖框架的各种配置和功能,有兴趣可以订阅一下,会持续更新

  • 相关阅读:
    《摸摸头之scala》1. idea 创建一个maven-scala项目
    电脑重装系统记事本打不开提示无法启动此应用程序怎么办
    interview6-jvm篇
    【详解JavaScript轮播图一】
    python渗透测试入门——取代netcat
    基于树莓派的Hadoop集群搭建
    【汇编】寄存器——内存访问内存中字的存储方式、DS和[address]、DS[]和CS:IP的区别、MOV,ADD,SUB、数据段与代码段的区别
    Java学习总结(答案版)
    【vscode+clangd】clangd不起作用的解决方案、compile_commands.json文件为空的解决方案
    【Qt】QTextCursor
  • 原文地址:https://blog.csdn.net/qq_31772441/article/details/126211676