zxy16305 / Blog

bak for hexo
3 stars 1 forks source link

Spring Security 文档阅读笔记 #8

Open zxy16305 opened 6 years ago

zxy16305 commented 6 years ago

第一页献给生词

先看的是目录(怎么有这么长的目录)

LDAP DSL CAS JAAS CSRF

(然后发现我之前看的连基础内容都还没看完 :joy:)

重要的配置项

HttpSecurity 里面一堆配置方法(注释非常齐全)【重头配置】


记录文档的页码(书签)

5.8.2 GlobalMethodSecurityConfiguration--2018-2-2-- 9.4.1 ExceptionTranslationFilter--2018-2-6--

zxy16305 commented 6 years ago

3.2 开始支持java配置

WebSecurityConfigurerAdapter.configure(Httpsecurity http) 的默认配置

  1. 所有请求都需要认证
  2. 表单登录认证开放
  3. HTTP认证开放

调用/logout会发生的事情(默认情况下)

  1. 清除HTTP的session
  2. 清除配置的rememberMe
  3. 清除SecurityContextHolder
  4. 重定向到/login?logout

    LogoutSuccessHandler被指定的时候,logoutSuccessUrl( )会被忽略。 HttpStatusReturningLogoutSuccessHandler用在restful的api下

spring security基本架构


SecurityContextHolder存储方式

  1. SecurityContextHolder.MODE_GLOBAL : 全局存储
  2. SecurityContextHolder.MODE_INHERITABLETHREADLOCAL :线程与其产生的子线程共享存储
  3. SecurityContextHolder.MODE_THREADLOCAL : 线程之间单独存储

读取当前的user信息

SecurityContextHolder.getContext().getAuthentication().getPrincipal(); //用户信息 SecurityContextHolder.getContext().getAuthentication().getAuthorities();//用户权限


自定义user鉴别

实现UserDetailsService 同时在configure( AuthenticationManagerBuilder auth )中,配置auth.userDetailsService(myUserDetailsService);


后台实现登录(伪)

基于其存储原理,可进行以下的操作(官方Demo, PS : 官方为了展示security的内部流程而写的):

Web Application的认证