我们都知道实现一套Spring Security 的 认证 流程, 需要设计很多和类来回切换, Usertails , UsertailsService , AuthenticationManager 等等, 这些类名又非常的长, 所以导致我们在写的时候,思绪混乱,不知道下一步应该写什么 ,所以今天我们就通过两张图来搞明白这个认证编码的流程

Tip:最好自己是已经跟着文档或者视频做过一次Spring Security认证流程

可以看看我的上一篇博客

更加优雅的认证授权——Spring Security_Hzq958的博客-CSDN博客

第一张图——原理流程图

第二张图——编码流程图(自顶向下)

一、UsernamePasswordAuthenticationFilter

我们先仔细看看原理图

这里是把我们的用户名密码传进来,用 UsernamePasswordAuthenticationToken 接收,

紧接着封装为 authentication 对象

对应我们编码流程图 的这一块

二、 UserDetailsService

多层的过滤器,嵌套调用方法,来到 UserDetailsService

把前面的用户名密码也传到这里了

来到UserDetailsService,第一个方法就是 loadUserByUsername , 这个方法就需要我们自己去重写,一般就是到数据库的用户表去查询用户( 这里并没有验证密码是否正确 ), 然后匹配到用户的话就会来查询权限,返回一个 UserDetails 对象;否则就抛出异常。

这里对应到我们的编码流程就是这一块

因为这里涉及到要返回一个 UserDetails 类型的对象, 所以我们就需要封装这么一个对象

对应到我们的编码流程是这块

三、密码校验

返回UserDetails 对象之后, 就来到了我们的密码校验

默认的密码检验规则一般都不是我们想要的,所以这里我们要自己选中密码校验规则,

也就是我们编码流程的注入 PasswordEncode Bean对象 到Java 工厂 , return  这里就是选择密码校验规则

四、返回 authentication 对象

对应我们编码流程图的这部分

五、自定义JWT 拦截器

所以我们的编码流程自顶向下的方式是非常合理, 避免了反复频繁的切换类

先编写SecurityConfig 类

这里的JWT 过滤器可以先不写

再编写LoginUser类和UserDetailsService

编写认证登录接口

最后再编写JWT 过滤器

然后再回头把Config文件 的JWT 过滤拦截放在最前面

用户 认证 指的是:验证某个用户是否为系统中的合法主体,也就是说用户能否访问该系统。用户 认证 一般要求用户提供用户名和密码。系统通过校验用户名和密码来完成 认证 过程。 通俗点说就是系统认为用户是否能 登录 。 用户授权指的是验证某个用户是否有权限执行某个操作。在一个系统中,不同用户所具有的权限是不同的。比如对一个文件来说,有的用户只能进行读取,而有的用户可以进行修改。一般来说,系统会为不同的用户分配不同的角色,而每个角色则对应一系列的权限。 通俗点讲就是系统判断用户是否有权限去做某些事情。
原文:http://blog.csdn.net/u011511684/article/details/31394493 示例下载地址:http://download.csdn.net/detail/u011511684/7506455 spring security 里面的四个重要的类,都需自己去实现: 1、UserDetailsService 读取 登录 用户信息、权限 2、Abst...
spring security 主要有两大功能,即 认证 和授权 1、 security 是如何 认证 账号的: 验证逻辑实现是在类AbstractUserDetailsAuthenticationProvider,此类实现了接口AuthenticationProvider的接口方法 Authentication authenticate(Authentication authentication) thr...