Spring Security(一)

Spring Security(一)

基本原理

前言

Spring Security核心功能
  • 认证(你是谁)
  • 授权(你能干什么)
  • 攻击防护(防止伪造身份)

Srping Security基本原理

项目中如果加入了Spring Security的依赖不做任何配置情况下,启动项目后,访问任何url都需要进行登录,SrpingSecurity默认提供了弹窗式的登录,默认用户名:user,密码会在项目启动日志中打印出来。

  • 简单的表单登录
// 创建一个类,继承 WebSecurityConfigurerAdapter 重写 configure 方法
@Configuration
public class BrowserSecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        // 启用表单登陆
        http.formLogin()
            .and()
            // 对请求做授权
            .authorizeRequests()
            // 任何请求
            .anyRequest()
            // 都需要身份认证
            .authenticated();
    }
}

启动项目后,访问任何路径都会调转到一个Security默认的表单页面中。

  • Spring Security核心就是过滤器链
    在这里插入图片描述

依照这个图可以看出 FilterSecurityInterceptor是整个过滤器链的最后一道关卡,ExceptionTranslationFilter会处理FilterSecurityInterceptor抛出的异常信息。

基本流程:

用户访问受保护的链接时首先会到 FilterSecurityInterceptor 如果不符合条件会抛一个异常到ExceptionTranslationFilter 然后 ExceptionTranslationFilter 会用 try catch 捕获异常并进行相应处理,处理完会重定向到默认的登录页面(这时候浏览器会响应一个Security默认的表单登录页面),输入用户名密码提交登录后然后会到 UsernamePasswordAuthenticationFilter 过滤器中,如果满足 UsernamePasswordAuthenticationFilter 类中定义的登录路径(“/login”)和请求方法(POST)然后会获取表单提交过来的用户名、密码一系列的逻辑判断完毕后跳转到 FilterSecurityInterceptor 过滤器,最终才会到我们项目中具体的Controller中的具体方法,至此,Security的基本登录逻辑完毕。:-)

猜你喜欢

转载自www.cnblogs.com/yliucnblogs/p/10247750.html