• SpringSecurity - 初识 SpringSecurity


    活动地址:CSDN21天学习挑战赛

    概述

    目前,在 Java web 开发中,安全框架常用的一般有 SpringSecurityShiro

    • SpringSecurity 特点:

      • Spring 无缝整合
      • 全面且完善的权限控制(包括微服务的权限控制)
      • 专门为 web 开发而设计
        • 旧版本不能脱离 web 环境使用
        • 新版本对整个框架进行了分层抽取,分为了 core 模块和 web 模块。单独引入 core 模块
      • 功能完善,重量级
    • Shiro 特点:

      • 轻量级,Shiro 主张的理念是把复杂的事情变简单。针对对性能有更高要求的互联网应用有更好的表现
      • 通用性
        • 好处:不局限于 web 环境,可以脱离 web 环境使用
        • 缺陷:在 web 环境下一些特定的需求需要手动编写代码定制

    基于我们开发中绝大部分情况下都是使用 Spring 框架,且对性能要求没有很高,所以我们一般选择 SpringSecurity 框架,毕竟 Spring 出品,必属精品

    牛刀小试

    ​SpringSecurity 是一个安全框架,前身是 Acegi Security,能够为 Spring 企业应用系统提供声明式的安全访问控制。Spring Security 基于 Servlet 过滤器IoCAOP,为 Web 请求和方法调用提供身份验证和授权处理,避免了代码耦合,减少了大量重复代码工作。

    • 首先我们新建一个 SpringBoot 项目,并且提供一个 hello 接口:
    @RestController
    public class HelloController {
    
        @GetMapping("hello")
        public String hello() {
            return "hello spring security";
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    启动项目后,访问接口:

    在这里插入图片描述

    • SpringBoot 为我们提供了集成 SpringSecuritystarter

    这里使用 SpringBoot 2.3.12.RELEASE 版本,对应 Security 5.3.9.RELEASE 版本

    <dependency>
       <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-starter-securityartifactId>
    dependency>
    
    • 1
    • 2
    • 3
    • 4

    并且 SpringBoot 已经为 SpringSecurity 提供了默认配置,默认所有资源(包括静态资源)都必须认证通过才能访问。此时再访问 hello 接口,会跳转默认的登录页面:

    在这里插入图片描述

    这里 SpringBoot 为我们提供了默认的用户名:user,密码为随机生成在控制台:

    在这里插入图片描述

    输入正确的用户名密码,认证通过后就可以继续访问了:

    在这里插入图片描述

    总结

    可能第一次使用 SpringSecurity 的朋友们都会有下面这些疑惑:

    • 为什么什么都没配置就会跳转到登录页面呢?
    • 登录页面哪里来的?
    • 能不能自定义登录页面?
    • 默认的用户名密码在哪里配置的?

    在之后的 SpringSecurity 学习 专栏中,我们一起来揭开 Spring Security 神秘的面纱。

    下篇文章: SpringBoot - 简单集成 SpringSecurity

  • 相关阅读:
    打造综合性品牌阵地 阿里元境引领元宇宙营销创新升级
    Java 8 中Stream流的一些用法
    基于NET蛋糕销售网站 毕业设计-附源码090918
    【js奇妙说】如何跟非计算机从业者解释,为什么浮点数计算0.1+0.2不等于0.3?
    【公益案例展】 温州市人民检察院——公益诉讼智能研判预警应用案例
    JavaScript事件循环
    八股文之redis
    【C++】手搓读写properties文件源码
    CTex下载地址和方法
    Java使用多线程做批处理(查询大量数据)
  • 原文地址:https://blog.csdn.net/qiaohao0206/article/details/126104544