ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

SpringSecurity基本原理和使用

2021-10-06 19:59:46  阅读:151  来源: 互联网

标签:框架 登录 基本原理 认证 API 使用 security SpringSecurity 请求


SpringSecurity

简介

安全框架概述

安全框架---->解决系统安全问题的框架。没有安全框架时需要手动对每个资源访问控制。

使用安全框架后,可以通过配置的方式实现对资源的访问控制

核心功能

  • 认证
  • 授权
  • 防止伪造身份

常用安全框架

  • Spring Security:Spring家族中的一员,是一个能够基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架。充分利用Spring IoC,DI(控制反转,依赖注入)和Aop(面向切面编程)
  • Apache Shiro:功能强大且易于使用的安全框架

基本原理

SpringSecurity实际上就是在API上添加了一组过滤器链

在这里插入图片描述

  1. 请求进来后先经过用户名密码认证过滤器,只要用户的请求满足该过滤器的条件,即认证成功.如果不满足则放行给下一个。

  2. 请求继续向后,经过BasicAutenticationFilter继续进行认证,直到最后FilterSecurityInterceptor拦截器,它是API的最后一环,由它来决定请求是否能到达具体的API.

    • 它会根据我们配置的一些要求,来进行判断.如果不通过则抛出异常
    • 例如,某API要求请求必须经过认证,则在最后一个拦截器处,请求如果没有进行认证,则抛出对应的异常
    • 再比如某API要求请求具有VIP2的权限,则最后一个拦截器会判断该请求是否具有VIP2权限
  3. ExceptionTranslationFilter的作用主要是捕获FilterSecurityInterceptor抛出的异常,并做响应的处理

  4. 绿色的部分可以通过配置来决定是否存在于过滤器链上,即由我们来决定使用哪些认证方式

基础使用

Security的默认实现

  1. Idea创建Springboot项目

  2. 编写测试Controller,直接启动访问localhost:8080/hello

    package com.sy.security.controller;
    
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    /**
     * @author 沈洋 邮箱:1845973183@qq.com
     * @create 2021/9/7-20:23
     **/
    @RestController
    public class HelloController {
        @GetMapping("/hello")
        public String test(){
            return "sddsds";
        }
        @GetMapping("/hello/test")
        public String hello2(){
            return "Hello world2";
        }
    }
    
  3. 加入security依赖再次启动localhost:8080/hello

            <!--security-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-security</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.security</groupId>
                <artifactId>spring-security-test</artifactId>
                <scope>test</scope>
            </dependency>
    
  4. 进入Security默认登录页面

    在这里插入图片描述

    加入Security的Starter后SpringBoot启动后默认开启

  5. 查看控制台输出的日志可以看到
    在这里插入图片描述
    这里输出的password就是security默认的登录密码
    security默认的登录账号是:user 登录密码是启动时生成的随机字符串

  6. 自定义配置登录账号信息

    spring:
      security:
        user:
          password: 123456
          name: admin
    

    再次启动并访问可以发现只能登录账号是我们配置的账号
    总结:security的默认实现只有一个登录用户,完全不符合我们的业务逻辑
    。我们后面还需要对security认证进行自定义配置。

标签:框架,登录,基本原理,认证,API,使用,security,SpringSecurity,请求
来源: https://blog.csdn.net/relosy/article/details/120628598

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有