Springboot +spring security,配置多个数据源:验证不同用户表

news2024/11/20 4:22:47

一.简介

上篇文章写到,我们在配置jdbc和mybatis 来源,进行登录后,出现了如下错误!
在这里插入图片描述
后面解决方案是:屏蔽了其中一个来源,登陆成功,也分析了其原因。

但是,但是如果需要配置多个数据来源,那怎么办呢?因为这种需求实际中还是有的,如:普通会员和管理系统用户应该存在不同的表,那么就需要两套数据来源,所以这个问题还是必须要解决!

处理方法

先看下源码,截图如下:
在这里插入图片描述
因为在源码中,判断了如果有两个UserDetailService存在,就不会给全局的AuthenticationManager设置AuthenticationProvider,因为它是一个provider对应一个UserDetailService,现在想要两组,就需要自己定义AuthenticationManager

二.创建项目

如何创建一个SpringSecurity项目,前面文章已经有说明了,这里就不重复写了。

三.代码实现

3.1定义两组UserDetailService

定义两个UserDetailsService ,UserDetailService类的代码如下:

@Bean
    public UserDetailsService userDetailsService1(){
        UserDetails userDetails = User.withUsername("memory1").password("{noop}memory1").roles("memory1").build();
        return new InMemoryUserDetailsManager(userDetails);
    }
    @Bean
    public UserDetailsService userDetailsService2(){
        UserDetails userDetails = User.withUsername("memory2").password("{noop}memory2").roles("memory2").build();
        return new InMemoryUserDetailsManager(userDetails);
    }

3.2定义AuthenticationManager

定义AuthenticationManager,AuthenticationManager类的代码如下:

@Bean
    public AuthenticationManager authenticationManager(){
        DaoAuthenticationProvider provider = new DaoAuthenticationProvider();
        provider.setUserDetailsService(userDetailsService1());
        DaoAuthenticationProvider provider2 = new DaoAuthenticationProvider();
        provider2.setUserDetailsService(userDetailsService2());
        return new ProviderManager(provider2,provider);
    }

3.3验证登录

memory1,截图如下:在这里插入图片描述
memory2,截图如下:
在这里插入图片描述
至此,配置多个数据来源就处理好了。

《肖申克的救赎》

生命可以归结为一种简单的选择:要么忙于生存,要么赶着去死。

懦怯囚禁人的灵魂,希望可以感受自由。强者自救,圣者渡人。

希望是件美丽的东西,也许是最好的东西。美好的东西是永远不会死的。

每个人都是自己的上帝。如果你自己都放弃自己了,还有谁会救你?

《熔炉》

我们一路奋战,不是为了能改变世界,而是为了不让世界改变我们。

现实如水母,看似美好无害实质总是致命伤人。

我们来到世界上,都是孤独的旅行,即使身边有人相伴,最终也会各奔东西!

世界上最美丽最珍贵的,反而是听不见且看不清的,只有用心才能感受得到。

《教父》

人可以不断犯错,但绝不能犯要命的错。

不要憎恨你的敌人,那会影响你的判断力。

人并非生来就伟大,而是越活越伟大。

《活着》

人是为了活着本身而活着,而不是为了活着之外的任何事物而活着。

以笑的方式哭,在死亡的伴随下活着。

没有什么比时间更具有说服力了,因为时间无需通知我们就可以改变一切。

你的命是爹娘给的,你不要命了也得先去问问他们。

《我不是药神》

世界上只有一种病,穷病,这种病你没法治,你也治不过来。

人间最高贵的是善良,是对生命的致敬。

《指环王》

把手握紧,里面什么也没有;把手放开,你得到的是一切。

我宁愿和你共度凡人短暂的一生,也不愿一个人看尽这世界的沧海桑田。

20.幸福的家庭都是相似的,不幸的家庭各有各的不幸。

或许有一天,人类变得萎缩懦弱,舍弃朋友,断绝友谊,但今天决不会这样。
《饮食男女》

22.人生不能像做菜,把所有的材料都准备好了才下锅。

什么叫做“可惜”啊,要心中有个“惜”字儿,才知道可惜。

其实一家人,住在一个屋檐下,照样可以各过各的日子,可是从心里产生的那种顾忌,才是一个家之所以为家的意义。

《让子弹飞》

世界上本没有路,有了腿便有了路。

如果你活着,早晚都会死;如果你死了,你就永远活着。

赚钱嘛,不寒碜

《被嫌弃的松子的一生》

小时候,谁都觉得自己的未来闪闪发光,不是吗?但是一旦长大,没有一件事会遂自己心愿。

要么伤心地长吁短叹,要么沉醉于悲伤中,要么草草的了结了一生,要么笑着搪塞过去,将错就错。

人的心灵是脆弱的,难以做到为自己恨的人祈祷。原谅不可原谅的人,并为之祈祷,这就是上帝的爱。

想要在这个世界上留下自己活过的证据,因为好不容易生而为人。

《美国往事》

不管何时何地,做你想做的事永远都不嫌晚 。

孤独并不可怕,可怕的是恐惧孤独。

你要一直不停地往前走,不然你不会知道生活还会给你什么。

《少年派的奇幻漂流》

这里必须说说恐惧,它是生活惟一真正的对手,因为只有恐惧才能打败生活。

人生就是不断的放下,但最遗憾的是,我们来不及好好告别!

如果我们在人生中体验的每一次转变都让我们在生活中走得更远,那么,我们就真正的体验到了生活想让我们体验的东西。

《罗生门》

沾沾自喜者只管自喜就是,但就别人说三道四则属多管闲事。

较之希望得到什么,我们更多是同"能够"得到什么达成妥协。

撒谎是人之本性,在大多数时间里我们甚至都不能对自己诚实。那是因为人们太脆弱了所以才撒谎,甚至是对自己撒谎。

《阿甘正传》

人生就像一盒巧克力,你永远不知道会尝到哪种滋味。

“你以后想成为什么样的人?”
“什么意思,难道我以后就不能成为我自己了吗?”

我不觉得人的心智成熟是越来越宽容涵盖,什么都可以接受。相反,我觉得那应该是一个逐渐剔除的过程,知道自己最重要的是什么,知道不重要的东西是什么。而后,做一个简单的人。

一个人真正需要的财富就那么一点点,其余的都是用来炫耀的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/553858.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2023年认证杯SPSSPRO杯数学建模B题(第一阶段)考订文本全过程文档及程序

2023年认证杯SPSSPRO杯数学建模 B题 考订文本 原题再现: 古代文本在传抄过程中,往往会出现种种错误,以至于一部书可能流传下来多种版本。在文献学中,错误往往被总结成“讹”、“脱”、“衍”、“倒”等形式,也可能同…

cda 1级模拟题错题知识点总结

Sql truncate函数 格式:TRUNCATE(number, decimals) number: the number to be truncated decimals:the number of decimal places to truncate to 截断到的小数位数,如果为0则表示不保留小数 例如: select truncate(2.83,0) 结果为2 select truncate(…

解读kubernetes部署:配置docker私服密钥与SSL证书创建

为k8s配置docker私服密钥 为了kubernetes有权访问您的docker私服,需要在kubernetes的凭证中建立docker私服的密钥: kubectlcreatesecretdocker-registryaliyun-secret--docker-server--docker-username--docker-password--docker-email--namespacens-jav…

2.golang的变量、常量、数据类型、循环和条件判断

一、变量 变量(Variable)的功能是存储数据。Go语言中的每一个变量都有自己的类型,并且变量必须经过声明才能开始使用。 Go语言的变量声明格式为: var 变量名 变量类型 例如: var name string var age int var isOk b…

线上问题处理案例:出乎意料的数据库连接池 | 京东云技术团队

导读 本文是线上问题处理案例系列之一,旨在通过真实案例向读者介绍发现问题、定位问题、解决问题的方法。本文讲述了从垃圾回收耗时过长的表象,逐步定位到数据库连接池保活问题的全过程,并对其中用到的一些知识点进行了总结。 一、问题描述…

LabVIEWCompactRIO 开发指南29 数据通信

LabVIEWCompactRIO 开发指南29 数据通信 LabVIEW FPGA中的数据通信分为两类:进程间和目标间。进程间通信通常对应于FPGA目标上的两个或多个环路之间的数据共享。目标间数据通信是在FPGA目标和主机处理器之间共享数据。对于这两种情况,在决定使用哪种机…

扩散能垒计算在电池材料领域的革新应用

扩散能垒计算在电池材料领域的革新应用 随着能源需求的增长和环境意识的提高,电池技术成为解决可再生能源存储和移动电子设备需求的关键。电池材料的研究和开发变得日益重要,而扩散能垒计算作为一种先进的计算方法,为电池材料领域带来了革新的…

设计模式之【观察者模式】,MQ的单机实现雏形

文章目录 一、什么是观察者模式1、观察者模式应用场景2、观察者模式的四大角色3、观察者模式优缺点 二、实例1、观察者模式的一般写法2、微信公众号案例3、鼠标响应事件API案例 三、实现一个异步非阻塞框架1、EventBus2、使用MQ 四、源码中的观察者模式1、Observable/Observer2…

pygam第3课——画图小程序

前言:我们前两节课已经学习了,界面的设计、图片的加载、那么今天我们将继续学习pygame的基础知识,我们的今天学习的内容是:鼠标滑动时坐标的实时获取、鼠标的移动事件、鼠标的点击事件、图形绘制等。希望大家能 搭建界面&#xf…

firewalld防火墙(又到了可以看日落和晚霞的日子了)

文章目录 一、firewalld概述二、firewalld和iptables的关系三、firewalld区域的概念四、firewalld数据处理流程五、firewalld检查数据包源地址的规则六、firewalld防火墙的配置种类1.运行时配置2.永久配置 七、firewalld防火墙的配置方法八、使用命令配置firewalld防火墙1.获取…

Ventoy 多合一启动盘制作工具神器 - 将多个系统 Win/PE/Linux 镜像装在1个U盘里

最近很多操作系统都纷纷发布了新版本,比如 Windows 11、Ubuntu、Deepin、优麒麟、CentOS、Debian 等等,对喜欢玩系统的人来说绝对是盛宴。 不过一般用 Rufus 等工具,一个 U 盘往往只能制作成一个系统的启动盘/安装盘,想要增加另一…

零入门kubernetes网络实战-33->基于nat+brigde+veth pair形成的跨主机的内网通信方案

《零入门kubernetes网络实战》视频专栏地址 https://www.ixigua.com/7193641905282875942 本篇文章视频地址(稍后上传) 本文主要使用的技术是 nat技术Linux虚拟网桥虚拟网络设备veth pair来实现跨主机网桥的通信 1、测试环境介绍 两台centos虚拟机 # 查看操作系统版本 cat …

VIBRO-METER VM600 IRC4 智能继电器卡

额外的继电器,由来自MPC4和/或AMC8卡的多达86个输入的方程驱动,用于需要2oo3表决等更复杂的逻辑时8个继电器,可配置为8个SPDT或4个DPDT使用IRC4配置器软件进行完全软件配置继电器可配置为正常通电(NE)或正常断电(NDE),具有可配置的…

小航助学GESP_C++一级模拟测试试卷(含题库答题软件账号)

GESP在线模拟训练系统请点击 电子学会-全国青少年编程等级考试真题Scratch一级(2019年3月)在线答题_程序猿下山的博客-CSDN博客_小航答题助手 答案:A 第1题人们在使用计算机时所提到的 Windows 通常指的是()。 A、操作系统B、多…

Science Bulletin:张占军教授团队提出“额叶保持,颞叶损伤” 假说解析成功认知老化

步入老年后,各项认知能力会逐渐衰退,我们把这一过程称之为认知老化。认知老化的过程与速度因人而异,走向阿尔茨海默病(AD)等认知障碍疾病为结局的属于病理认知老化,也就是经历轻度认知障碍阶段,…

【分享】PowerPoint如何设置保护和加密?

想保护自己做好的PPT,通常用的方法就是给PPT加密。下面我们来看看PPT加密保护方式有几种,具体如何操作。 打开PPT,点击菜单【文件】,再依次点击【信息】-【保护演示文稿】,就可以看到设置密码保护的5个选项。 选项1&a…

小航助学2022年NOC初赛图形化(小低组)(含题库答题软件账号)

需要在线模拟训练的题库账号请点击 小航助学编程在线模拟试卷系统(含题库答题软件账号)_程序猿下山的博客-CSDN博客 单选题3.0分 删除编辑 答案:D 第1题如果想要从造型库中自选一个喜欢角色,可以点击哪个按钮呢? A、①B、②C…

Go语言核心编程-流程控制

第 5 章 程序流程控制 5.1 程序流程控制介绍 在程序中,程序运行的流程控制决定程序是如何执行的,是我们必须掌握的,主要有三大流程控 制语句。 顺序控制分支控制循环控制 5.2 顺序控制 程序从上到下逐行地执行,中间没有任何判…

智行致远丨美格智能亮相IOTE 2023 第十九届上海国际物联网展

5月17~19日,IOTE 2023第十九届上海国际物联网展盛大举办,全球超过350家参展企业到场展示先进的物联网技术和产品,盛况空前。本届展会以“IoT构建数字经济底座”为主题,将IoT技术引入实体经济领域,促进数字化转型和智能…

深度剖析JVM调优法则:从两大特性CPU、内存出发轻松掌握调优实战技巧

1、JDK自带工具 场景一、CPU过高 CPU占用过高排查思路:(查进程->查线程列表->查线程堆栈) step1:通过top命令查询占用CPU情况 top p.s.shiftp(大写的P-cpu排序) shiftm(大写的M-内存排序) step2:通过进程pi…