当前位置: 首页 > news >正文

做正规小说网站塘沽网

做正规小说网站,塘沽网,济南网站搭建公司,潍坊专业做网站公司SpringSecurity6 | 默认用户生成 ✅作者简介#xff1a;大家好#xff0c;我是Leo#xff0c;热爱Java后端开发者#xff0c;一个想要与大家共同进步的男人#x1f609;#x1f609; #x1f34e;个人主页#xff1a;Leo的博客 #x1f49e;当前专栏#xff1a; Java…SpringSecurity6 | 默认用户生成 ✅作者简介大家好我是Leo热爱Java后端开发者一个想要与大家共同进步的男人 个人主页Leo的博客 当前专栏 Java从入门到精通 ✨特色专栏 MySQL学习 本文内容SpringSecurity6 | 默认用户生成 个人知识库 知识库欢迎大家访问 学习参考 讲师孙帅老师课程孙哥说SpringSecurity6 1.前言 大家好我是Leo哥前几周忙工作博客等事宜都给耽搁这不这周闲一点了抓紧开始更SpringSecurity。接到上一节我们学习了SpringSecurity的默认登录页并通过源码去简单看了一下实现。这一节呢我们主要来学习当我们启动项目之后默认用户以及默认密码是如何生成的。好了话不多说让我们开始吧。 2.问题 其实第二节内容中我们就简单了解了项目启动之后SpringSecurity会给我生成一个默认的用户user以及一个随机的uuid密码。但是我们只是简单了解一下他是因为在用户相关的自动化配置类在 UserDetailsServiceAutoConfiguration 里边在该类的 getOrDeducePassword 方法中生成的我们再来简单回顾一下。 可是这个用户user为什么默认是user呢这个密码又是如何一步一步生成出来的呢这一系列的过程是怎样的呢带着这些疑问今天Leo哥就跟大家一起学习其中奥妙。 3.默认用户生成 首先我们来讲讲这个默认用户生成他具体是如何是怎么生成的又具体存在哪里呢我们接着往下看 还记得这个自动配置的imports嘛在项目启动之后SpringBoot就会自动导入一些我们需要的配置我们这里主要看一下SecurityAutoConfiguration这个类。 如上图在这个类中他主要加载了一些配置类比如SecurityProperties这个配置文件让他在项目启动之前就生效。 我们接着点开这个配置文件进行查看看看是否我们想找的配置信息。 点开之后果然发现了一个静态的User类在这个User类中有name和password属性这不就是我们的默认用户信息嘛默认用户名为user默认密码为随机生成的UUID。 4.表单认证流程 上面我们知道了默认用户是怎么一步一步加载生成的那我们就接着往下走既然知道了用户名跟密码我们就使用SpringSecurity给我提供的表单进行登录认证那这个登录又是如何一步一步进行认证的呢我们接着看。 在之前的学习中我们简单追踪了一下SpringBoot自动配置相关的内容知道了SpringSecurity最终会在这里对我们的所有请求进行拦截也就是我们所谓的认证是通过http进行认证当然认证是分好几种有默认的httpBasic 以及 formLogin而我们默认的那个表单登录页走的就是formLogin这个方法。 他会调用 HttpSecurity 类的 formLogin() 方法在该方法中创建 FormLoginConfigurer 类的实例并指定处理认证的 Filter 进行认证 然后又去new了一个FormLoginConfigurer()然后去调用父类的构造方法区new这个石磊 在 UsernamePasswordAuthenticationFilter的 attemptAuthentication() 中调用 AuthenticationManager 接口的 authenticate() 方法进行认证 我们点开AuthenticationManager发现他是一个接口于是我们点开他的实现类ProviderManager中的authenticate() 进行查看。 又去调用了provider.authenticate(authentication)方法我们接着点进去看发现AuthenticationProvider又是一个接口于是我们接着去查看他的实现类。 而他实际执行的是 AuthenticationProvider接口实现类AbstractUserDetailsAuthenticationProvider 中的 authenticate() 方法在该方法中调用 retrieveUser() 方法 而实际执行的是 AbstractUserDetailsAuthenticationProvider 的子类 DaoAuthenticationProvider 中的 retrieveUser() 方法在该方法中调用 UserDetailsService 接口的 loadUserByUsername() 方法 他实际执行的是 UserDetailsService 接口实现类 InMemoryUserDetailsManager 中的 loadUserByUsername() 方法在该方法中会在 users 集合变量中根据用户输入的帐号获取 UserDetails 信息 这个users是什么呢可以看出来是本来进行定义的我们点过去看看本来的属性users 可以看出来这个users就是从HashMap中取出来的也就是基于内存保存的users。 类 InMemoryUserDetailsManager 是由内存 map 支持的接口实现类基于内存存储不需要后端数据库 5.小结 默认用户名 user 和 控制台的密码是在 SpringSecurity 提供的 User 类中定义生成的。在表单认证时基于 InMemoryUserDetailsManager 类具体进行实现也就是基于内存的实现当然我们后续进行拓展的话可以直接实现UserDetailsService接口通过数据库进行用户实现。 6.总结 以上便是本文的全部内容本人才疏学浅文章有什么错误的地方欢迎大佬们批评指正我是Leo一个在互联网行业的小白立志成为更好的自己。 如果你想了解更多关于Leo可以关注公众号-程序员Leo后面文章会首先同步至公众号。
http://www.yutouwan.com/news/138579/

相关文章:

  • 做甲方去哪个网站应聘wordpress 分享 qq
  • 安徽省做网站4a广告公司什么意思
  • 1997年网站建设项目安康市滴滴公司电话
  • 网站关键字怎么修改网站的设计流程有哪些步骤
  • 六年级做的网站的软件下载曲靖 曲靖网站建设软件(app)开发
  • 色块网站设计旅游类网站开发任务书
  • 租号网站开发成本科技园
  • 郑州%公司 网站建设做网站公司怎么样
  • 江苏做网站的企业网站改版的费用
  • 清河做网站哪儿便宜google下载
  • 广州网站开发创意设计公司菏泽官方网站
  • 企业网站色彩搭配网站推广营销的意义
  • 广东建设职业技术学院网站微信公众号制作平台
  • wordpress 外链裁剪搜索引擎优化趋势
  • 免费发布网站seo外链汕头网站制作找谁
  • 企业网站建设费用详情请假条模板
  • 什么网站可以自己做配图搜题公众号怎么制作
  • 营销型网站建设微博wordpress无法进入登录页面
  • 网站开发经理招聘极验验证+wordpress
  • 国外网站空间租用费用临沂做百度网站软件公司
  • 网站制作公司报价网站系统维护一个月正常吗
  • 沈阳市浑南区城乡建设局网站在线图片修改
  • php网站系统东莞网站关键词优化哪家好
  • 企业网站建设管理平台如何查注册商标是别人注册过的
  • vi设计网站大全wordpress按照证书
  • 专业做网站上海开设计公司要怎么规划
  • 菏泽网站建设便宜臻动传媒网站建设电商学堂
  • 苏州建设银行网站首页国外性价比高的vps
  • 西安高校定制网站建设公司推荐山西网站的公司
  • 买卖网站建设电商网站建设分析