zoukankan      html  css  js  c++  java
  • 011 SpringSecurity的基本原理

    一:securuty默认情况

    1.默认的配置

      在引用security依赖以后,会有一个配置

      security.basic.enabled=true

    2.启动

      用户名:user

      密码:在控制台上查看

      

    3.作用

      在demo中的所有服务都没有被保护,是不安全的。

      所以,需要有认证与授权

      刚才的属于security默认的实现方式。

    二:基于浏览器的安全的基本认知

    1.新建一个包

      并覆盖原有的安全配置

     1 package com.cao.security.browser;
     2 
     3 import org.springframework.context.annotation.Configuration;
     4 import org.springframework.security.config.annotation.web.builders.HttpSecurity;
     5 import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
     6 /**
     7  * 覆盖掉security原有的配置
     8  * @author dell
     9  *
    10  */
    11 @Configuration
    12 public class BrowserSecurityConfig extends WebSecurityConfigurerAdapter{
    13     @Override
    14     protected void configure(HttpSecurity http) throws Exception {
    15         //表单登陆的一个安全认证环境
    16         http.formLogin()
    17             .and()
    18             .authorizeRequests()    //请求授权
    19             .anyRequest()            //任何请求
    20             .authenticated();         //都需要认证
    21         
    22     }
    23 }

    2.效果

      进入登录页

      

      登录之后:

        又会返回到刚刚访问的页面

      

    3.httpbasic的身份认证

     1 package com.cao.security.browser;
     2 
     3 import org.springframework.context.annotation.Configuration;
     4 import org.springframework.security.config.annotation.web.builders.HttpSecurity;
     5 import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
     6 /**
     7  * 覆盖掉security原有的配置
     8  * @author dell
     9  *
    10  */
    11 @Configuration
    12 public class BrowserSecurityConfig extends WebSecurityConfigurerAdapter{
    13     @Override
    14     protected void configure(HttpSecurity http) throws Exception {
    15         //表单登陆的一个安全认证环境
    16 //        http.formLogin()
    17         http.httpBasic()
    18             .and()
    19             .authorizeRequests()    //请求授权
    20             .anyRequest()            //任何请求
    21             .authenticated();         //都需要认证
    22         
    23     }
    24 }

    4.效果

      

    三:原理

    1.原理图

      

    2.原理说明

      前面都是可以配置的过滤器。

      如果没有带登录信息,就会一个一个朝后做验证。

      一直到最后一个,如果前面都通过了,但是没有登录,将会抛出异常,到ExceptionTranslationFilter,做一个重定向到登录页。

      然后,用户登录,就会到相应的过滤器,又会到最后一个FilterSecurityInterceptor,

      最终进入Restful API

    3.进行断点观察

      FilterSecurityInterceptor

      

      ExceptionTranslationFilter:捕获异常

      

      UsernamePasswordAuthenticationFilter

      

      UserController:进入服务

      

  • 相关阅读:
    linux cmake安装方法
    Linux下安装numpy
    linux下安装opencv3.0
    linux升级gcc
    php session获取不到的解决方法
    python Tesseract安装方法
    SQLite-编译指示
    第十章:定积分
    7. 错误、调试和测试
    钱纳里的工业化阶段理论
  • 原文地址:https://www.cnblogs.com/juncaoit/p/9735101.html
Copyright © 2011-2022 走看看