粉丝3.6万获赞17.0万

你们遇到过这种情况吗?首先看一眼代码视力,这是一个 supreme boot 项目,这个方法用于保存学生信息,在方法中又开启了一个现成,保存另一个学生信息。最后手动抛出一个异常,这里我添加了一个 supreme 的生命式事物, 执行一下会是什么效果呢?咱们来看一眼数据库,现在数据库里面是没有数据的,咱们通过 pos 他们调用一下,看一眼效果, 再刷新一下数据库,发现子线城的数据保存进来了,这是什么原因呢? severin 事务是通过数据库连接来实现的,咱们来看一眼 severin 事务管理员码, 发现数据库链接是放在 thread local 当中的, thread local 本身是线层隔离的, 咱们开启的线程和主线程不是同一个数据库连接,只有同拥有同一个数据库连接,才能同时提交事务和回滚。那这个问题应该怎么解决呢?咱们可以通过编程式事务 加上咱们的加握同步工具来解决,同步工具呢有很多种,这里面咱们用到的是卡当烂尺。来看一眼原码。 首先呢,模拟一些学生数据,创建一个现成池创,按照学生数量创建一个计数器,这里有一个异常标识,默认值为 false, 如果子线程报错,则将这个标识设置为处。按照学生数量,咱们开启现成, 这里通过传赛身 time later 的 x q 的方法来进行插入操作。这里我判断了手动模拟了个 异常,判断学生姓名是否等于礼仪,如果等于礼仪,我则抛出一个自定义异常,接下来呢,捕捉这个异常,如果发现异常呢,则将咱们那个异常标识设置为处, 然后计入器卡档。最后呢,用一个烂尺点儿 awat 等待其他线程执行。最后判断这个异常标识是否为处,如果为处,则进行回滚,再往下呢,那就是拉烂尺点儿 awat 主线程,等待其他子线程执行。 那咱们执行一下,看一眼效果, 看一眼日志,手动异常,说明咱们的异常已经抛出了 这些 circle 呢,里一、里二里三也执行了,咱们看一眼数据进没进来,发现这种方式是可以解决问题的。还有什么解决方法?小伙伴请在评论区里留言。

今天给大家分享一下随便部分加卡不卡,去给大家演示一下这个手动的 a c k, 以及说你没有正确的 a c k 被带来的一个问题。 好,那这边呢,我们是借助于这个 spin 杠卡不卡的这个包啊,以及说我们这边的一个 ui 界面给大家去做的这一期的一个演示。嗯,首先说我们如果说要进行这个手动的 atk, 是需要去做两点配置的啊,一个是说我们要关闭它的一个自动提交啊,以及说我们这个 att 的模式设置为手动。好,我们直接来看一下配置, 这里呢关闭自动提交啊,这里是开启了一种配置,然后其他的呢就是一些呃常规的一些配置吧。 ok, 做好了这样的配置之后呢,我们来看一下我们的消费者,我们消费者这边呢也是借助于这个卡不卡类似呢去做的一个消费啊,这里是指定的 topic 和我们的一个股票 id 啊,都是写在我们的这 这个类里面了。那这里呢我们的消费除了能拿到我们刚才的这个业务对象之外,还可以拿到一个 knot 里面的这样的一个确认参数。在我们进行自己的业务逻辑处理之后呢,我们去进行一个确认啊,这样子就完成了一个正确的 一个手动提交的一个过程。那如果说我们没有正确的操作,会出现什么样的问题呢?我们先来演示一下,首先这里我们不去进行一个确认。好,然后我们这边来看一下我们的一个测试类,测试类这边呢其实是进行了四条消息的一个发送,好,看一下发送方法,他就是借助于这个 temperat 直接去进行的一个发送, 将消息投递到这个零五里面去。 ok, 然后呢这边最后一行,我们去借助于这个哈当烂纸去做一个主色,也就说让他去进行一个保证他的一个消费。好,那 这里我们来看一下他的一个测试。 ok, 这边可以看到,其实我们的这个 ctrl 啊,他也是进行了输出消费到了四条的一个消息,对吧?然后呢我们来看一下这个 ui 面板上, 好,找到我们 top 五的对列。然后呢这边其实呃消息也都在是条消息,然后这是我们的一个消费者,其实你弄眼一看好像也没有什么问题,对吧?也都正常的一个消费了,但其实这里其实呃已经出现了一个问题啊,因为你没有去进行对移的一个提交, 那我们这边呢先关掉当前的这个消息,然后呢我们这里还会有一个幕后方法,这个方法就是启动了,然后就在这走射等待着,然后我们看一下跑一下这个这个方法会出现什么样的一个问题。好,这我们可以看到我们这个方法启动了之后呢,我们的消费者再次去 消费了这样的四条消息啊,这其实就是我们说的那个问题,如果说你在开启了 acc 的模式之下,你没有去进行手动的一个去提交,那就会导致你的项目每一次重启都会去重新消费里面所有的一个消息啊,这也是最近小伙伴遇到的一个问题啊,那我们再来看一下我们正确的一个操作 啊,如果说我们这里消费完了之后,去给他进行了一个手动的 a c k 啊,看看会怎么样?好,我们把代码改改回来正确的 a c k 之后,我们再去跑一下这个末核方法,因为这个方法跑的时候呢,我们消费者就会启动, 这我们可以看到他再一次消费了我们的四条消息,对吧?啊?那我们继续来看一下这边啊,首先说我们刚才的那个消费者,其实他这里是没有进行一个位移提交的,这边直接就没有显示。然后我们来刷新一下, 刷新了之后我们可以注意观察这个当前的 offset 和 nds offset, 它其实是已经进行了一个位移的提交。呃,就说它已经消费到这边来了,那我们再把这个方法关闭之后,模拟我们的应用再次重启,看它还会不会被继续消费掉。 大家好,我们这边其实又一次重启了之后,我们也没有去再次拉到一个消费消息了,就是因为我们刚才已经给他确认了,所以就不会出现重复的去进行消费这样的一个问题。 好,那今天的演示就到这里,有需要代码的小伙伴呢,可以去首页去获取一下。好,那我们下期再见。

最近星球有个朋友说面试碰到一个问题,说是卡夫卡如果中间一条消息消费失败会怎么样?如果说没有任何的设置条件说明的情况下,要一一说起来还挺复杂的。我们可以分成四个条件来说,首先是有虫式和没虫式,对于原生的卡夫卡,其实是没有虫式机制的,这个和 lok mq 不一样,但是 spring 卡不卡,把我们封装了虫式的功能。然后是自动提交位移和手动提交位移, 当然大部分情况下都建议你手动提交为那这样组合起来的话,就有四种场景,这种提交无从事,这种提交有从事,手动提交无从事和手动提交有从事。 实际上只要我们有从事,不管是自动提交还是手动提交,在没有达到设置从事上线次数之前,都会一直从事消费,并且会主持后面的消息。 然后再说一下没有从事的情况。第一种情况是,如果是自动提交并且没有从事的情况,如果当前消息消费失败了,刚好在自动提交之前机器重启了,那么机器重新启动之后,还是能重新消费到这条消息,那如果是自动提交之后呢?那消息就相当于丢 不是。第二种情况,如果是手动提交并且没有重试的情况,如果当前消息消费失败,并且后面没有新的消息进来,这时候如果机器重启,那还是可以再次消费。如果有新的消息进来,并且消费成功,那么将会覆盖位移之前的消息,就相当于丢失。

哈喽,大家好,我是七哥,今天这个视频啊,是我们 supreme 江湖路的第一个视频,我决定啊,就以 sten bot 作为我们步入江湖的开端,现在开发外表应用啊, suprem bot 无疑是启动一个 supreme 项目最快最流行的一种方式了, 无论你要构建一个什么样的应用,他都可以让我们尽可能快的启动起来,前期基本上不需要配置任何东西,而且他内置了应用服务器,可以让我们两三下就搞出一个生产级别的应用出来,那这对于我们加大程序员来说,只能用两个字来形容了,那就是幸福, 哈哈哈,那接下来的十分钟,大家仔细看,七哥尽可能的为大家展示一个尽可能快,尽可能全的入门体验,我们来一起 看一下吧。 接下来我就给大家演示一下这个 sten boot 的入门体验教程。那首先说一下对于我们本地环境的一个要求,首先啊,你要在本地装一个 jdk 八或者以上的版本,因为我们今天使用的这个是 sten bot, 二点五点二,他对于 jdk 的要求最低就是八了, 然后我推荐大家下载这个 jdk 八或者 jdk 十一,这也是官方的一个推荐。然后呢,就是我们的边移打包工具,然后你可以选择格一斗或者 maven 格一斗呢,必须下载四点零以上的版本,然后 vivo 的话最少是三点二或者以上的版本。 那第三个啊,就是选择一个你顺手的一个稳稳编辑工具啊,这里我选择的就是号称这个宇宙最强的引他的 id i 啊,那环境交代完了,我们就来实战一下吧。首先啊,第一步我们肯定要创建一个斯文布特的项目,那如何创 点了,我们可以打开这个 start brasprandl 这个工具啊,可以帮我们初始化分布的项目,我们打开这个页面可以看到,你看这里可以选择你这个项目是美版项目还是卓越斗项目,然后选择语言,选择版本, 选择最终的是打架包还是打袜包运行,然后 jdk 的版本,然后右边这块能添加依赖,那接下来我们来添加一下啊,因为我对命运比较熟悉,所以这里我选的就是命运项目,然后四分布的二点五点二,这里啊就是选你的组织 id, 还有你的这个项目 id 就可以了。 我们来写一下啊,因为今天是我们私奔江湖路的第一个视频,那就叫私奔肉的零一吧, 扫个地, ok, 描述这个孔可以不写啊。然后呢,我们添加依赖,由于我们是演示啊,所以 今天我就想给大家展示一下这个奔如何进行这个响应式编程,所以我们首先来添加一个 vivo 这个依赖啊,接下来那就是数据库驱动,这里我们也选择这个响应式数据库驱动 二 dbc, 然后呢数据库我们选择内存数据库 h two, 接下来就是这个安全主人 cqt, 还有呢,再加一个 logo, 嗯,再加一个这个 h a t h t u a t 啊,对这个 监控和管理的, ok, 我们这里添加了六个依赖,然后当我们添加完依赖之后,我们可以点击这个 s pro, 这个网站还是比较酷炫的,你看他点了之后,你就可以预览一下我们将要生成的这个项目目录,我们点击看一下, 这个层次结构都非常的清晰啊,然后我们可以点击泡沫,里面就有我们相关引用的一些依赖,都没啥问题。当你确认无误之后啊,我们就可以点击这个登录的下载。 ok, 下完之后啊,我们把它解压缩, 然后呢我们就来打开这个我们的这个项目 鞋底, 那我们来打开这个项目, 刷新一下这个依赖啊, 这个第一次打开啊,肯定会有点慢,因为 他要刷新我们依赖的那些架波吗?稍等一下啊, 速度也挺快的啊。 ok, 项目结构已经出来了,可以看到一个标准的一个眉纹的项目结构就已经有了, 然后这个蕊臊子底下放的就是我们的配置文件,然后这个,呃,不对,跟上这个类啊,这就是我们使用我们内置的这个应用服务器来启动我们这个私人项目, 这也是分布的非常方便的一个点。 ok, 依赖刷新完了我们泡沫的 xm 二,里面就是我们引入的那些依赖。 ok, 那项目已经创建完了,那接下来我们就给大家演示一下如何访问这个数据库,这里我们使用的是这个 a 四数据库,为了不依赖于我们本地的一个数据库环境吗?让大家可以直接来跑,我们就用 h two 数据库来演示,然后我们用的数据库驱动啊,是这个啊,二, dbc 这个奔五后来推出的这个响应式编程的一个响应式数据库驱动啊,接下来我们就来实现一下啊,大家访问数据库啊,我们首先定一个这个数据库的实体对象,定一个优色对象吧, 写两个属性。 ok, 写完这个实体对象,我们再来声明一个叠欧, 我们来声明一个优色碟油吧,继承我们这个。 ok, 定义完数据访问接口之后,我们就直接来操作数据库, 这里我们把我们这个数据库对象给他引进来。 好,我们来注入这两个数据库对象,一个是我们定义的这个优色的,还有一个就是这个对他贝斯开的用来访问这个 ht 数据库的,再来定一个 logo 对象吧, 搞定一个日日访问对象。那接下来我们来操作一下数据库啊,这里我们来先定义两个键标语句,为了方便我们后续搜索的访问。 ok, 这里我们首先定义的键标语句,然后呢我们通过想象式编程来往我们的内存数据库 h two 中插入数据,然后来运行一下 看,可以看到我们的用户已经插入成功了,那接下来我们来写一个 rese 接口来访问我们数据库中的数据,那如何写一个外国接口呢?也非常简单哦,我们来写一下详视编程啊,这里是 root f fex, 把我们的优色 dl 注入进来, 然后呢把这个病管理起来。 ok, 通过这两行代码我们就可以搞一个详 式的接口供外表访问了,这点我们定义的路径是杠 uss, 然后呢状态呢是防御成功,然后包底里面我们放我们数据库里面插入的那些所有数据,也就 usir。 那写完这个我们在启动之前啊,我们先来 把我们这个润杠 cctty 来先关掉,因为这个安全控制访问啊,他会提示我们输入密码,这点我们先把它注视掉。先来测一下我们这个 ress 接口可不可用吗? ok, 来启动一下, 那启动成功了,我们来测一下。测一下这个 rs 的接口,那我们使用命令行来测,当然你用浏览器也是一样的, 我用命令行不是为了装逼啊,因为我们公司有个加工师说啊,平时程序员啊,一定要掌握这个使用效来编成的习惯,所以我是强行在 锻炼好吧。 ok, 我们来访问一下 logo post 八零八零杠六小时看可以看到数据摘散,数据已经返回了啊,然后呢,我们来格式化一下啊, 你看我们返回了我刚才给数据库插的那三条数据,一二三,对吧。说一下,这个 jq 是一个麦克上的一个折损格式化工具啊,如果你是卖核电的话,你直接可以用红 pro 来安装这个 pro extel jq 就可以了,因为我已经装过了啊, 这里就不再提示了,这是格式化工具,大家肯定都能搞定。 ok, 那 reass 接口,我们也通过这两行代码就搞了一个 ress 接口出来。那第三个我们来看一下 span box 的一个监控和管理。大家都知 知道我们应用上线之后,我们肯定都要通过一些监控手段来看一下我们这个应用在线上的一个运行情况,那是分布的,就通过这个 h a 的来暴露一些很多端点来让我们来访问。 那说起来很抽象,我们来实战一下。好吧,那要使用斯奔布的艾特这个监控组件,我们只需要在我们的泡沫的 xml 里面引入这个依赖就可以了。奔波的 startha 这个依赖,我们把它加进来就 ok 了。然后呢,我们来访问一下啊, 这里我们可以通过这个 htv 路径,也就是 logos 八零八零 h a 的这个这个路径啊,来展示所有分布的这个应用暴露给我们的一些监控点。 呃,我们来格式化一下啊,稍等啊,可以看到这里一共暴露了三个应用监控点,一个就是我们这爱车 a 的这个巅峰点,这个他就是刚才我们访问的这个,还有就是这个 boss 啊,我们来试着访问一下,看还有什么访问什么科二 可以看到,看他有一个状态,状态自断。这里你可能会问布特,他暴露的端点也太少了吧,就这几个,看不出来什么呀,这是因为啊,他默认是把其他的一些暴露的英端呢,已经关闭了,我们通过一些属性配置就可以打开。 ok, 通过这个属性配置啊,我们就可以打开这个 hios 端点下的所有的属性。然后呢,我们再来多开几个端点,因为刚才展示只有三个吗?对吧? ok 啊,通过这行配置,我们就可以打开通过这个外本链接来暴露的所有资源端点。那改完配置我们再重启一下, ok, 成功了。 这时候我们再来看一下啊,可以看到你看现在他暴露的这些资源端点就非常多了,这里面我们看一下啊,你看有 hios 端点,然后还有底下是应付的端点,这是打印应用信息的。那我们来给大家访问几个看一下啊, 通过这个 logos 三点,我们就可以打印我们当前整个应用的一个日级别,你看可以看到这里面有很多每个类的日级别 非常多啊,大家可以自己去研究一下啊。然后再说一下这个 motex 啊,他可以展示我们系统目前的一些 gvm 的情况, cpu 的情况, 我们来试一下啊。你看这里面展示了非常多的属性, gvm 的属性,还有一些系统的属性,然后我们用这些属性名呢, 再去访问一下,就能看到详细的一个信息了。我们这里随便拿一个看一下这个这些 pass 看一下, 来瞅 a 特,然后把这粘过来, ok, 然后就可以看到这个这边这 c 的 pass, 这个他的一个详细信息。至于这里面每一个的意思啊,由于篇幅关系,我这里就不详细解释了,大家可以自己去研究一下啊, 然后再给大家说一个,还有一个比较常用的,就是这个 logo, 通过这个 logos 端点,我们可以看到我们目前整个应用的所有日日的这个打印级别, 你看现在目前可以看到我们所有的日志的一个级别,这个在我们日常应用中啊,我们可以通过发送 pose 请求到这个端点,就可以改变某一个类的这个日志级别,这是非常好用的,比如 测试环境,我们一般调整级别可能是呃艾瑞级别,然后我们要调这些东西呢,我们就可以通过给他发送一个请求来把我们的日级别改成英法啊。这个 如果大家有兴趣的话,可以在视频下给我留言,我也会考虑出一个详细的教程来给大家讲一下这块这些端点的一个应用啊。 那讲完了这个自带的一些端点,其实我们还可以自定义一些端点来暴露一些信息,那如何自定义呢?给大家展示一下啊? ok, 这样我们就在 house 这个断点下制定了一些我们想要的信息,然后我们来启动看一下啊, 好了,启动完了,我们来访问一下试一下。 ok, 可以看到我们自定义的信息已经出现了,这里啊,就显示了我们自定义那些信息,那通过这种方式,我们就可以自定义一些我们想要展示的信息到这个本部的监控里面,可以让我们做一些更好的定制化的一些开发。那最后一个我们再演示一下本部的如何实现这个安全控制, 这个就要打开,我们刚才注视掉这个 cpunccutute, 我们把它注视放开, 然后呢?因为打开安全控制肯定就要输入用户名密码了,所以我们这里要自定义一个 用户名密码,然后来拦截我们所有应用的一个访问。这里我们来写一下啊,也非常简单啊,我们直接定义,我们想要是变成 这个类来设置用户密码就可以了。用户名我们设为饿的命,然后帕斯沃的呢,这里我们也设成饿的命,他的用户角色呢是这个优色。 ok, 这样其实就可以了,我们来启动试一下。 好了,启动成功了,我们来先测一下之前的那借口还能不能访问,因为我们加了安全控制,理论上他直接访问肯定是不行的,对吧?先试一下我们之前的右侧接口 看没有信息啊,我们来看一下这个详情吧,他什么错都没有显示,小伙伴可能看的不是太清楚,你看加 杠飞之后,我们就可以展示这个请求的详细过程了,这里可以看到错误码是四零一,对吧?现在搞开发的四零一应该很眼熟了吧,对吧?就是没有权限。那来我们来加上我们的用户的密码,再来试一下 杠微,然后呢杠优,我们加上我们刚才密码是饿的命,对吧?密码跟用户名都是饿的命,那加上这个用户们密码之后啊,我们这个响应就正常了,响应码是二百,然后呢数据也返回回来了,对吧? 说实话一下,你看信息都有,对吧?然后我们再试一下我们之前资本部的提供的 so a 的这些端点监控,我们看还能不能访问, 你这个也访问不了了,然后我们再来加上 我们的这个用户名密码,再试一下岗位有, ok, 现在你看加上用户密码之后,我们熟悉的这些应用监控短点就又出来了,然后可以到这里啊,我们就给我们因为加上了这个安全防控制, 可以看一下我们今天一共做了哪些事情呢?首先我们访问了数据库,对吧?然后呢我们又加了这个 res 接口,再一个就是这个 sten boos 提供的这个应用管理与监控,我们又实现了一个自定义的这个监控信息。 还有呢就是给我们整个应用加上这个安全反应控制,一共呢也没有几行代码,对吧?这个如果你自己敲的话,我觉得敲快一点十分钟是没啥问题的。 然后呢,今天我们给应用也没有加什么配置,只给这个拍拍锁链里面配了我们要开放的那些应用监控端点, 其他的配置文件我们一个都没加,你像传统的这个私奔开发,如果你要实现这个安全房控制,你肯定要加个拦截器,对吧?你要配一个拦截器,然后写一堆代码,非常麻烦。还有那个病管理啊, res 接口啊这些现在用 steple 来开发的话,都非常的简洁, ok, 打完收工,我们用了十分钟左右的时间完成了应用创建、数据库访问、 res 接口开发、监控与管理,还有就是安全控制。那整个视频中啊,我们并没有对 sten boot 的技术细节展开详解,比如说我们呆帽中使用的 呃详细编程,还有就是 spanboud, soat 这些监控端点的一个详细讲解,仅仅是让大家感受一下 steplenbong 的这个便利与强大,从而明白 supreme 江湖路坚定闯下去的一个必要性。那今天的视频就到这里了,感谢大家的收看,如果今天的视频对你有帮助的话, 欢迎点个赞,支持一下七哥,更多关于 supreme 的内容我也会持续的更新中,如果你有特别想看的或者想了解的私奔相关的知识点,欢迎在评论区留言告诉我,也欢迎小伙伴点个关注, super 江湖路,我们一起走!

若一 v u 一 pro, 它是基于若一 v u 一全新的 pro 版本,在马云上已经获得六十五点六 k 多的一个十大数。它的功能更加丰富,比如说像 rbac 的动态权限、数据权限、杀死多住户辅料、 abo 公众牛、上方登录支付、短信商城等功能。项目有 spend boot 版、 spenco 的微副版, 前端项目有 viv 后台管理系统以及运营 app 小程序,可以看到相关项目的十大速度非常高,可以说这个作者的运营手段还是有一套的,值得我们学习。然后我们来体验下这个管理系统,比如说系统管理, 像用户角色、组织架构、部门菜单等等这些的。然后我们可以来看一下技术设施里面,像代码生成器,这个在写管理系统 clud 的时候还是非常有用的。接下来我们来看一下 mcco 监控,在这里我们可以查看一下 cco 的 一个监控,另外是瑞迪斯监控,这里我们可以简单看一下。然后是报表管理,我们可以看一下报表设计器, 然后是工作流程,在这里我们可以编辑保存模型,另外他也有商品中心、订单中心以及营销中心。然后也有公众号管理,在这里我们可以可视化的去管理我们的一个菜单,比如说以这个为例,也就是公众号的一套, 整体上来说这个项目的功能还是非常多的。最后有没有小伙伴们是利用这个脚趾架进行项目开发的呢?

大家好,今天这个视频我们来看一下怎么在前后端分离的项目中使用 spring security 进行认证。当前使用的 spring boot 版本是二点七点九。我们先来规划一下想要实现的功能,一个自定义登录接口, 返回 g w t 格式的偷看。一个验证偷看认证结果的测试接口。一个自定义退出接口, 用来清除 redis 中的缓存信息。首先在泡沫文件中引入 security 的 starter 以及数据库。 呃,发自解散 redis 和 g w t 相关的一些依赖。 application 的样貌里边不需要进什么配置。数据构表结构我们,嗯,这里只用到一个右侧表, 因为我们用到了 mabet plus, 它需要签订一下它的扫描范围。 菜叶键在这个启动列上加上 map skin spring security the starter, 严重后默认就自动生效了。不过它是前后端部分里的表单登录方式, 登录后自动跳转到目标页面,是通过 search 进行状态管理的。我们想要实现前后段分离,就首先需要去掉默认的登录表,通过这个接口 接受登录请求。我们新建一个 security 管理类,加上 configuration 主键和 enable versculity 主键。在 security 管理类中新建一个认证,并实现它里边的 authenticated 和 support 这两个方法。 support 这个方法是判断当前请求的参数 是否由该认证并进行处理 or send k 的。这个方法就是具体的认证逻辑了。这是从前端获取到的用户名凭证,凭证就是密码。 这个 user details service 的 lower user by user name 是自带的一个键 接口。通过实验这个接口从数据库中获取我们需要的用户信息。我们这是从右侧表对用户名进行查询,他如果不会空,就把它封装到这个 logo 右侧中。 这个就是我们自定义的 user details 的实现类认证,并建好后就要写接受外部请求的 login 接口,也就是这个接受一个 login user, 根据传入的用户名和密码构建出 username password authentication token, 然后调用前面在 security 管理类中定义的认证,并根据 认证编的逻辑,我们可以知道 principle 对应的就是这个 lower user by use name 返回的这个 logo user, 所以我们可以从中获取到对应的 user 对象, 然后就可以用 user 的 id 生成对应的投根串光,后续的投根传递使用啊。最后我们把完整的用户信息存入 redis 中, 那个 user id 作为 k。 接下来就是验证 token 认证结果的测试接口,我们需要能对前端传入的 token 进行处理啊,这里就需要新建一个 token 认 正过滤器,我们这里继承 one super request filter, 这个过滤器可以避免请求被多次处理。从 request the header 中获取偷看信息,验证它是否过期, 如果没有过期的话,从中解析出游戏 id, 然后根据用户 id 查询用户信息, 如果有的话,我们需要更新一下用户信息的操作时间,然后把用户信息封装一下,然后传入 security context hold 中, 供过滤器后续的业务逻辑使用。最后方形和 hello 接口就是我们的透根认证结果测试接口,测试 通过的话会显示这一串走不串。登录接口开发好以后,还需要在 security 管理类中对这个接口进行放行。在 filter 亲 这个方法中,把 login 接口配置为允许匿名访问,因为我们现在是前五段分离通过头根进行认证的,所以这里 就不使用 session 进行存储信息了。最后把 g w t 这个 filter 放到用用户名密码认证前面,不然的话会先被用户名密码认证过滤器抛出认证异常。认证异常可以通过实现 authentication intric point comments 方法来进行处理,过滤器抛出的异常需要使用 response 的 get a writer the print 进行输出。我们这里还需要对密码进行一下加密处理,毕竟不能在数据库里直接存铭文密码。 我们可以在这个 password incode 这个 being 中设置需要的加密方式,然后在这个 认证并中可以对输入的密码和系统保存的密码进行比对。我们测试的时候可以用他的这个 inco 的方法生成加密的密码。最后就是 自定义退出接口,我们在这里可以清除 redit 中的还在 信息,因为退出那肯定是已经登录的时候才需要的,所以说我们可以从前端获取到 tok, 通过这个认证过滤器 把用户信息存入 security context 勾搭中,在这个 log alt 方法中可以直接获取到用户信息,最后根据用户 id 删除掉 redis 中存储的内容就可以了。我们来演示一下, 我们先看一下异常,因为我们现在这个投片已经过期了,所以说我们这边直接返回这个海捞这个接口可以看到可以返回一个用未登录的异常,这个异常就可以被这里拦截到, 朋友们登录一下,输入用户名和密码,复制一下返回的这个图片,把这个内容替换掉,可以看到这个内容就是我们 接口里边打印的内容,因为我们这里边,嗯,每次调用这个都会有更新,我们可以看一下,现在是三十三秒, 可以看到可以正常的更新退出,也需要使用这个图片退出成功, 这个时候就没有了,我们再来访。 hello, 这是能正常的打印出这个用户认证失败,这个异常。好了,上面就是在前后端分离的项目中使用 spring security 进行认真的演示,希望能对大家的 工作学习有所帮助,谢谢观看下个视频,再见。