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:进入服务

  

原文地址:https://www.cnblogs.com/juncaoit/p/9735101.html