您现在的位置是:主页 > news > 网站建设工具的实验心得/什么是网络营销工具

网站建设工具的实验心得/什么是网络营销工具

admin2025/6/1 10:49:49news

简介网站建设工具的实验心得,什么是网络营销工具,动态网站开发课程试卷,新品发布会问题 延续上章留下的问题,百度了下,搜到以下结果 结果1 https://www.jianshu.com/p/83973a37fd34 结果2 https://www.cnblogs.com/jrkl/p/13513317.html 测试 通过搜索,看到了第二篇文章中的rememberMeauthenticationProvider。其实…

网站建设工具的实验心得,什么是网络营销工具,动态网站开发课程试卷,新品发布会问题 延续上章留下的问题,百度了下,搜到以下结果 结果1 https://www.jianshu.com/p/83973a37fd34 结果2 https://www.cnblogs.com/jrkl/p/13513317.html 测试 通过搜索,看到了第二篇文章中的rememberMeauthenticationProvider。其实…

问题

延续上章留下的问题,百度了下,搜到以下结果

结果1

https://www.jianshu.com/p/83973a37fd34
在这里插入图片描述

结果2

https://www.cnblogs.com/jrkl/p/13513317.html
在这里插入图片描述

测试

通过搜索,看到了第二篇文章中的rememberMeauthenticationProvider。其实之前在调试的过程中也有看到,但是当时没在意。
现在看到了这个,可以看到它里面有个属性key。
于是想着重写一下这个bean。
MyRememberMeAuthenticationProvider

import org.springframework.security.authentication.RememberMeAuthenticationProvider;/*** @author qilong.sun* @version v1.0* @time 2021/10/18 17:06* @title* @description https://www.cnblogs.com/jrkl/p/13513317.html*/
public class MyRememberMeAuthenticationProvider extends RememberMeAuthenticationProvider {public MyRememberMeAuthenticationProvider(String key) {super(key);}
}

注册为bean
这里的这个key,就是我们用的存储token的名称,我把它写成了常量。

    /*** spring security key** @return*/@Bean("rememberMeAuthenticationProvider")MyRememberMeAuthenticationProvider myRememberMeAuthenticationProvider(){MyRememberMeAuthenticationProvider o = new MyRememberMeAuthenticationProvider(KEY);return o;}

然后加断点,启动测试。F6一步一步来,发现有个源码没加断点,但是它自动进来了。
可以看到,也就是在这里,设置了前面文章中的判断地方的第二个key(第一个key是我们自己设置的)。
在这里插入图片描述
但是,虽然发现了这个,同时还看到了我重写的beanmyRememberMeAuthenticationProvider没有生效。虽然最后跑了它,但是对初始化方法已经跑过了,所以还是无效。
在这里插入图片描述

解决

在上面的代码中可以看到,要么配置RememberMeAuthenticationProvider,要么配置RememberMeConfigure里面的key。
现在配置的RememberMeAuthenticationProvider没生效,所以想着配下后者。
这个是查到的文章:https://blog.csdn.net/andy_zhang2007/article/details/94402246
里面有个使用片段,但是在自己代码里面找了下,都没找到这个地方。
但是突然看到了这个使用片段里面有这个:HttpSecurity
想着有可能是这里的配置:
在这里插入图片描述
然后就在下面配了下
在这里插入图片描述
测试之后,发现前台直接成功了。

优化

首先,加的这个MyRememberMeAuthenticationProvider可以不要了,因为在上面的配置里面已经配置过了。且,在源码里面是先读取了httpSecurity.rememberMe().key(KEY);的这个key,使其生效,然后再读的自定义的这个beanMyRememberMeAuthenticationProvider。也就是说自定义的这个bean根本没生效(如果想使用它,需要另外研究配置)。所以可以直接删掉。

另外,可以把rememberMe相关的几个类放到一个包下。

测试流程

登录这边我没做处理。
下面是步骤:
首先,登录
可以看到,在没有登录过的时候,cookie这里是没有 sessionid或者 rememberMe相关信息的
在这里插入图片描述
下面是登录,登录的时候选择记住密码。登录成功,后台通过response返回jssessionid和cookie
在这里插入图片描述

接着,复制当前页面地址,然后关闭浏览器,访问测试接口

首先,测试前,我们可以看到,因为关闭浏览器,jssessionId已经丢失了,只剩下一个remember-me的信息。
这时候我们点击测试,就会带着rememeber-me请求到后端,后端验证,如果成功,则会返回接口结果。
下面是图例

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

结束

至此,spring security在前后端分离方式中使用记住密码的功能算是完成了。
感觉主要涉及到的知识有:类的继承。
然后就是哪里报错,就加断点,跑源码,根据源码的配置找原因。
找到原因后,继承类,覆盖源码中的配置。
这样就才成功了。