那么如此拦截有什么效果呢?效果就是当你未登录的情况下,访问任何内部请求都会统一跳转到登录界面,登录以后方可进入主页。
结果就是,如果你没登陆,要么登录进入系统,要么注册以后通过登录进入系统。
// 配置登录请求相关内容
http.formLogin()
.usernameParameter(“idNumber”) // 登录表单的账号name属性值,默认username。可自行通过此语句配置
.passwordParameter(“password”) // 登录表单的密码name属性值,默认password。可自行通过此语句配置
.loginPage(“/store/loginPage”) // 当用户未登录的时候默认跳转到登录界面
.loginProcessingUrl(“/loginSys”) // 对应登录表单上的action属性值
.defaultSuccessUrl(“/store/homepage”,true) // 登录成功后,响应重定向的位置
;
…
由以上代码块,相信通过注释就可以看出来他们所代表的意思,loginPage就是未登录时我们要请求的地址,loginProcessingUrl对应的就是以上HTML代码中form表单上的action属性,defaultSuccessUrl登录认证成功后我们跳转的界面请求。
当我们登录失败的时候,弹出提示:
记住我勾选以后有什么效果呢?就是当你将网页关闭以后,不用再次登录,只要你以前登录过,就无需再次输入密码进行登录。
// remember-Me操作
http.rememberMe()
//.rememberMeParameter(“”) // 记住我参数名,默认是remember-me
.tokenValiditySeconds(60*60) // 设置记住我的时间,单位是秒,默认是7天
.tokenRepository(persistentTokenRepository)
.userDetailsService(userLoginService)
;
由图上代码可以看出,点击记住我的默认属性值是remember-me,可通过rememberMeParameter自行设置,而tokenValiditySeconds的意思就是记住你的时间,代码中的60*60就是记住你一个小时,这一个小时之内免登录。
// 配置退出登录的请求
http.logout()
.invalidateHttpSession(true) // 回收HttpSession对象,回收之前调用HttpSession.invalidate(),默认true
.clearAuthentication(true) // 退出之前清空Security记录的用户登录标记,默认true
// .addLogoutHandler() // 增加退出处理器
.logoutSuccessUrl(“/store/loginPage”) // 退出后回到登录界面
.logoutUrl(“/logout”);
如以上代码的注释。
在使用SpringSecurity认证的时候,必须有一个对密码的加密解密的操作,那么此处我们是针对密码做一个MD5的加密认证操作,那么在注册存储密码的时候,我们就需要将密码通过SpringSecurity的加密方式存储密码。
我们来看看数据库中锁存储的值:
代码展示:
// 密码加密方式:MD5
try {
MessageDigest digest = MessageDigest.getInstance(“MD5”);
byte[] tmp = digest.digest(user.getPassword().getBytes());
// 转换为以十六进制的无符号整数形式,用一个整数参数的字符串表示形式
// 可自行定义,但是要与SpringSecurity中的密码校验方式相同
StringBuilder passWord = new StringBuilder(“”);
for(byte b : tmp){
String s = Integer.toHexString(b & 0xFF);
if(s.length() == 1){
passWord.append(“0”);
}
小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
总结
在这里,由于面试中MySQL问的比较多,因此也就在此以MySQL为例为大家总结分享。但是你要学习的往往不止这一点,还有一些主流框架的使用,Spring源码的学习,Mybatis源码的学习等等都是需要掌握的,我也把这些知识点都整理起来了
总结
在这里,由于面试中MySQL问的比较多,因此也就在此以MySQL为例为大家总结分享。但是你要学习的往往不止这一点,还有一些主流框架的使用,Spring源码的学习,Mybatis源码的学习等等都是需要掌握的,我也把这些知识点都整理起来了
[外链图片转存中…(img-PMsnRyQ8-1711156804356)]
[外链图片转存中…(img-vJDfRQka-1711156804356)]