核心知识点
定义数据访问逻辑对象(UserMapper) 定义用户信息远程调用Feign接口(RemoteUserService~基于此接口调用sso-system服务中的用户信息) 基于Security规范定义用户业务逻辑服务对象(UserDetailsServiceImpl~调用RemoteUserService获取和封装用户信息) 定义用户认证基本配置类(SecurityConfig~配置密码加密对象,认证规则,以及登录成功或失败的处理方案) 实现自定义登录逻辑测试(校验登录正确账号和错误账户下服务端的响应结果) 熟悉SpringSecurity的认证流程?(Client->Filters->AuthenticationManager–>UserDetailService->…)
常见问题分析
为什么定义RemoteUserService 接口(Feign)?(基于此接口调用远程sso-system服务) sso-auth服务中用户业务数据的获取在哪里?(客户端提交的用户名,sso-system服务提供的数据库数据) 为什么要构建SecurityConfig对象?(配置加密算法,认证规则) 为什么要让SecurityConfig类要继承WebSecurityConfigurerAdapter类型?(重写默认的认证规则) 认证过程中使用的密码加密对象是谁?(BCryptPasswordEncoder,不可逆加密对象) 用户登录时,需要从数据库查询哪些信息?(用户信息以及用户的权限信息) 如何基于用户id查询用户权限,你有什么方案?(3种)
流程图
?单体架构中的用户的状态的存储是如何实现的?(了解,默认是存储到了tomcat的session对象中)
?常见Bug分析
没有PasswordEncoder对象,例如:
?远程调用服务404异常,例如:
?远程调用服务没启动或服务名不正确,例如
?基于postman登录测试时404异常,例如:
?服务名的定义和使用不规范,例如:
|