• 【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

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

  • 相关阅读:
    php函数array_map的用法详解
    使用 Python 的高效相机流
    Java集合-Map接口
    使用阿里云服务器三分钟搭建网站
    java计算机毕业设计古惠农产品线上销售系统源码+mysql数据库+系统+LW文档+部署
    [代码实战和详解]VGG16
    Leetcode 206反转链表、3无重复字符的最长子串、912排序数组(快排)、215数组中的第k个最大元素、53最大子数组和、152乘积最大子数组
    linux安装MySQL8.0,密码修改权限配置等常规操作详解
    【go学习笔记】Go errors 最佳实践
    深度学习笔记-------KNN算法
  • 原文地址:https://blog.csdn.net/qq_31772441/article/details/126211676