码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • SpringSecurity - 初识 SpringSecurity


    ​

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

    概述

    目前,在 Java web 开发中,安全框架常用的一般有 SpringSecurity 和 Shiro:

    • SpringSecurity 特点:

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

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

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

    牛刀小试

    ​SpringSecurity 是一个安全框架,前身是 Acegi Security,能够为 Spring 企业应用系统提供声明式的安全访问控制。Spring Security 基于 Servlet 过滤器、IoC 和 AOP,为 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 为我们提供了集成 SpringSecurity 的 starter:

    这里使用 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

  • 相关阅读:
    oracle 19c 创建新用户 解决ORA-65096问题
    Diagrams——制作短小精悍的流程图
    解决phpstudy无法启动MySQL服务
    数据库系统原理与应用教程(041)—— MySQL 查询(三):设置查询条件
    安装插件时Vscode XHR Failed 报错ERR_CERT_AUTHORITY_INVALID
    浅析设计模式3 —— 装饰者模式
    助你上手Vue3全家桶之Vue3教程
    CG MAGIC分享3ds Max卡顿未保存处理方法有哪些?
    浅谈双十一背后的支付宝LDC架构和其CAP分析
    基于Java的网上手机销售系统的设计与实现(附:源码 论文 sql文件 部署视频)
  • 原文地址:https://blog.csdn.net/qiaohao0206/article/details/126104544
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号