本文共 2387 字,大约阅读时间需要 7 分钟。
Spring Security 是一个基于Spring的安全框架,Spring boot更好的集成了Spring Security的开发工作。在Spring 框架基础上,Spring Security 充分利用了依赖注入DI和 面向切面编程AOP功能,为应用系统提供声明式的安全访问控制功能,减少了企业安全控制编写大量重复代码的功能,是一个轻量级的安全框架。
1、 认证(Authentication):指的是验证某个用户是否为系统的合法主体,也就是说用户能否访问该系统。
2、授权(Authorization):指的是验证某个用户是否有权限执行某个操作。请求过程:
1、springSecurityFilterChain中各个过滤器怎么创建的只需了解即可。不要太过关注。
2、重点记忆UsernamePasswordAuthenticationFilter,ExceptionTranslationFilter, FilterSecurityInterceptor这三个过滤器的作用及源码分析。
3、重点记忆认证中Authentication,AuthenticationManager,ProviderManager, AuthenticationProvider,UserDetailsService,UserDetails这些类的作用及源码分析。
4、重点记忆授权中FilterInvoction,SecurityMetadataSource,AccessDecisionManager的作用。
SecurityContextHolder: 提供对SecurityContext的访问。
SecurityContext: 持有uthentication对象和其他可能需要的信息。 AuthenticationManager: 其中可以包含多个AuthenticationProvider。 ProviderManager: 为AuthenticationManager接口的实现类。 AuthenticationProvider: 主要用来进行认证操作的类,调用其中的authenticate()方法进行认证操作。 Authentication: Spring Security方式的认证主体。 GrantedAuthority: 对认证主题的应用层面的授权,含当前用于的权限信息,通常使用角色表示。 **UserDetails:**构建Authentication对象必须的信息,可以自定义,可能需要访问db得到。 **UserDetailsService:**通过username构建UserDetails对象,通过loadUserByUsername根据username获取UserDetails对象。1、 添加依赖
添加依赖后,默认所有的请求就都需要进行验证。
org.springframework.boot spring-boot-starter-security
2、自定义配置
实现WebSecurityConfigurerAdapter 类
@Configurationpublic class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { // 定义请求方式 是form表单 还是 basics模式 http.formLogin()// http.httpBasic() .and() .authorizeRequests() .anyRequest() .authenticated(); }}
3、controller
@Controllerpublic class HelloController { @GetMapping("/hello") @ResponseBody public String hello () { return "hello spring security"; }}
当请求 /hello
时会自动跳转到login登录页面。
basic模式:是通过请求头Authentication: Basic
的方式进行传输用户信息,在BasicAuthenticationFilter中进行base64 解码,获取用户信息。
转载地址:http://gbfoi.baihongyu.com/