版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第SpringSecurity+Redis认证过程小结由于今天用Security进行权限管理的时候出现了一些Bug,特此发这篇博客来补习一下对SpringSecurity的理解
当今市面上用于权限管理的流行的技术栈组合是
ssm+shrio
SpringCloud+SpringBoot+SpringSecurity
这种搭配自然有其搭配的特点,由于SpringBoot的自动注入配置原理,在创建项目时就自动注入管理SpringSecurity的过滤器容器(DelegatingFilterProxy),而这个过滤器是整个SpringSercurity的核心。掌握着SpringSercurity整个权限认证过程,而SpringBoot很香的帮你将其自动注入了,而用ssm
去整合Security,将会耗用大量的配置文件,不易于开发,而Security的微服务权限方案,更是能和Cloud完美融合,于是Security比Shrio更强大,功能更齐全。
Security的核心配置文件
核心:ClassSecurityConfigextendsWebSecurityConfigurerAdapter
继承了WebSecurityConfigurerAdapter后我们关注于configure方法对于在整个安全认证的过程进行相关的配置,当然在配置之前我们先简单了解一下流程
简单的看了整个权限认证的流程,很轻易的总结得出,SpringSecurity核心的就是以下几种配置项了
拦截器(Interceptor)
过滤器(Filter)
处理器(Handler,异常处理器,登录成功处理器)
那我们就首先通过配置来完成认证过程吧!!!!
Security的认证过程
假设我们要实现一下的认证功能
1.是登录请求
我们需要先判断验证码是否正确(验证码过滤器,通过addFilerbefore实现前置拦截)
再判断用户名密码是否正确(使用自带的用户名密码过滤器,UsernamePasswordAuthenticationFilter)
配置异常处理器(Handler)通过IO流将异常信息写出
关于密码校验的流程:
UsernamePasswordAuthenticationFilter的密码校验规则是基于AuthenticationManagerBuilder(认证管理器)下的UserDetailsService里的规则进行验证的:
其中的核心方法:
1.publicUserDetails*loadUserByUsername(Stringusername)
通过请求参数的用户名去数据库查询是否存在,存在则将其封装在UserDetails里面,而验证过程是通过AuthenticationManagerBuilder获取到UserDetail里的username和password来校验的,
这样我们就可以通过
配置yaml文件设置账号密码
通过数据库结合UserDetail来设置账号密码
(UserDetailsService中的方法,注意需要将UserDetailsService注入AuthenticationManagerBuilder中)
@Override
publicUserDetailsloadUserByUsername(Stringusername)throwsUsernameNotFoundException{
SysUsersysUser=sysUserService.getByUsername(username);
if(sysUser==null){
thrownewUsernameNotFoundException(用户名或密码不正确
//注意匹配参数,前者是明文后者是暗纹
System.out.println(是否正确+bCryptPasswordEncoder.matches(111111,sysUser.getPassword()));
returnnewAccountUser(sysUser.getId(),sysUser.getUsername(),sysUser.getPassword(),getUserAuthority(sysUser.getId()));
通过了这个验证后,过滤器放行,不通过就用自定义或者默认的处理器处理
核心配置文件:
packagecom.markerhub.config;
importcom.markerhub.security.*;
importorg.springframework.beans.factory.annotation.Autowired;
importorg.springframework.context.annotation.Bean;
importorg.springframework.context.annotation.Configuration;
importorg.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
importorg.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
importorg.springframework.security.config.annotation.web.builders.HttpSecurity;
importorg.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
importorg.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
importorg.springframework.security.config.http.SessionCreationPolicy;
importorg.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
importorg.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled=true)
publicclassSecurityConfigextendsWebSecurityConfigurerAdapter{
@Autowired
LoginFailureHandlerloginFailureHandler;
@Autowired
LoginSuccessHandlerloginSuccessHandler;
@Autowired
CaptchaFiltercaptchaFilter;
@Autowired
JwtAuthenticationEntryPointjwtAuthenticationEntryPoint;
@Autowired
JwtAccessDeniedHandlerjwtAccessDeniedHandler;
@Autowired
UserDetailServiceImpluserDetailService;
@Autowired
JwtLogoutSuccessHandlerjwtLogoutSuccessHandler;
@Bean
JwtAuthenticationFilterjwtAuthenticationFilter()throwsException{
JwtAuthenticationFilterjwtAuthenticationFilter=newJwtAuthenticationFilter(authenticationManager());
returnjwtAuthenticationFilter;
@Bean
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 关于安全有趣的演讲稿
- 我为国货而骄傲演讲稿
- 固态电解质界面原子结构分析课题申报书
- 温州亚运会少儿演讲稿
- 疫情下的新挑战演讲稿
- 河南大学学生演讲稿格式
- 通信企业社会责任指引
- 《PLC控制技术及应用》课件-知识延伸:展厅人数控制系统
- 《变流器运行与维护》课件-3.1 任务一 风力发电系统控制
- 新生儿黄疸的并发症预防
- 《工业物联网》课件 - 智能化时代的工业革命
- 掐丝珐琅制作工艺
- 中移铁通招聘笔试试题
- 2023公路旋挖钻孔灌注桩施工标准
- 小水电安全生产事故应急专项预案
- (高清版)JTGT 5440-2018 公路隧道加固技术规范
- 不良品管理规范操作
- 中职农林牧渔类《农业经营与管理》职教高考复习题库(浓缩500题)
- 外贸贸易公司介绍
- 飞机舱门及撤离滑梯-空客320型飞机舱门结构及操作方法
- 小学生作文方格纸A4纸直接打印版
评论
0/150
提交评论