security认证流程简单分析

1 简单的认证流程:
– 前台填写表单数据,封装成用户对象—》交给认证管理器(相当于loginService)-----通过-》
userDetailService获取数据库中的用户和密码—》调用密码器匹配器与表单对象中的用户名和密码进行匹配-》
进行认证—》认证成功放行资源,将用户信息,权限封装在SecurityContent里,放到session中–》认证失败拦截到登录页面
2Security认证原理
– SpringSecurity是基于Filter实现认证和授权,底层通过FilterChainProxy代理去调用各种Filter(Filter链),
Filter通过调用AuthenticationManager(认证管理器)完成认证 ,通过调用AccessDecisionManager(授权管理器)完成授权
3 SecurityContextPersistenceFilter
– 这个filter是整个filter链的入口和出口,请求开始会从SecurityContextRepository中,获取SecurityContext对象并设置给SecurityContextHolder。在请求完成后将
– SecurityContextHolder持有的SecurityContext再保存到配置好的
– SecurityContextRepository中,同时清除SecurityContextHolder中的SecurityContext
4 UsernamePasswordAuthenticationFilter
– 默认拦截“/login”登录请求,处理表单提交的登录认证,将请求中的认证信息包括
username,password等封装成UsernamePasswordAuthenticationToken,然后调用
AuthenticationManager的认证方法进行认证。
5BasicAuthenticationFilter
– 基本认证,httpBasic登录,弹出登录框登录
6 RememberAuthenticationFilter
– 记住我
7 AnonymousAuthenticationFilter
– 匿名Filter,用来处理匿名访问的资源,如果SecurityContext中没有Authentication,
就会创建匿名的Token(AnonymousAuthenticationToken),然后通过
SecurityContextHodler设置到SecurityContext中。
8 ExceptionTranslationFilter
– 用来捕获FilterChain所有的异常,进行处理,但是只会处理 AuthenticationException和AccessDeniedException,异常,其他的异常 会继续抛出。
9 FilterSecurityInterceptor
– 用来做授权的Filter,通过父类(AbstractSecurityInterceptor.beforeInvocation)调用
AccessDecisionManager.decide方法对用户进行授权。
在这里插入图片描述在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值