安全框架
- 认证 Authentication
- 俗称登录
- 401 认证失败
- 俗称登录
- 授权 Authorization
- 根据角色和权限,决定能够执行哪些操作
- 403 权限不足
- 根据角色和权限,决定能够执行哪些操作
认证的执行流程
-
由spring监听器根据spring-security.xml 创建spring-security的对象,并把它们交给spring容器管理
-
当一个请求过来,首先经过 DelegatingFilterProxy (代理过滤器),由它将请求交给spring-security 内部的过滤器进行处理(11 个)
-
UsernamePasswordAuthenticationFilter (基于用户名密码的认证过滤器)
-
收集表单数据,将表单数据封装至令牌对象 UsernamePasswordAuthenticationToken
-
令牌对象(类型Authentication)中由四个属性
principal 对应着用户名 credentials 对应着密码 authorities -- 角色(多个,集合) authenticated false 是否已认证
-
将令牌信息交给了 authentication-manager(认证管理器对象)
-
认证管理器调用认证提供者(authentication-provider)
-
再由认证提供者调用 UserDetailService (接口)loadUserByUsername 方法返回一个用户详情对象(UserDetail)
-
将用户详情对象返回给 认证管理器, 认证管理器调用一个密码编码器完成密码对比(令牌中的密码和用户详情对象的密码做对比)
-
认证通过,更新令牌(类型Authentication)信息
principal 存储用户详情 credentials -- 没用了 authorities 角色信息(刚从用户详情中获得的) authenticated true(已认证)
-
将认证通过的令牌对象存入 securityContext(安全上下文)
-
[外链图片转存失败(img-IpdyTl1h-1568542117053)(spring security.png)]
springmvc 的工作流程
- 请求发送到服务器后,被封装为 request 对象,到达 dispatcherServlet(springmvc 的入口)
- HanlderMapping(处理器映射器)
- 根据请求地址,找到由哪个控制器的哪个方法来处理此请求
- 其中的一个实现:RequestMappingHandlerMapping 根据 @RequestMapping 注解的路径来进行匹配
- <mvc:resources <mvc:default-servlet-handler 也会对应一个处理器映射器 SimpleUrlHandlerMapping
- HandlerExecutionChain(处理器执行链)
- 调用控制器对应的哪些拦截器(多个)
- 调用处理器适配器(HandlerAdapter)
- HandlerAdapter(处理器适配器)
- 调用控制器(controller)
- 统一返回了 ModelAndView 对象
- 再由视图解析器(ViewResolver)
- 在转发前,会把 model 中的数据存入 request 作用域
- 将视图名转换为最终的 jsp 路径,并转发到 jsp
- 如果执行过程中出现了异常:
- ExceptionHandlerExceptionResolver(异常解析器)
- jsp 动态生成 html 代码,返回响应
[外链图片转存失败(img-N00juDj0-1568542117056)(springmvc.png)]
md5
生成一个签名
- 只要文件内容一样,那么签名结果也一样
- 无论原始的内容有多大,最后的签名结果都是固定长度(16个字节)
- 不可逆,不能根据签名结果回推原始内容