SpringBoot基于SpringSecurity表单登录和权限验证的示例

一、简介

上篇介绍了一个自己做的管理系统,最近空闲的时间自己在继续做,把之前登录时候自定义的拦截器过滤器换成了基于SpringSecurity来做,其中遇到了很多坑,总结下,大家有遇到类似问题的话就当是为大家闭坑吧。

二、项目实现功能和成果展示

首先来看下登录界面:这是我输入的一个正确的信息,点击登录后SpringSecurity会根据你输入的用户名和密码去验证是否正确,如果正确的话就去你定义的页面,我这里定义的是查询教师信息页面。来看下代码吧。

SpringBoot基于SpringSecurity表单登录和权限验证的示例

三、准备工作(前台页面、实体类)

实体类Teacher:字段主要有id、name、sex、email、schedule_Id、password、phone,上面都加了Hibernate的验证,其他字段大家可以自己写,然后生成getter和setter方法

SpringBoot基于SpringSecurity表单登录和权限验证的示例

再来看下前台页面,前台我使用的是一个BootStrap的页面,模板语言使用的是Thymeleaf,当然为了能够在页面支持security的语法需要在上面加入一个security的引入标签

index.html"页面

SpringBoot基于SpringSecurity表单登录和权限验证的示例

index.html中登录信息:需要注意的是我的表单是提交到/teacher/login这个路由上,然后就是字段中的name属性必须要和你Teacher实体类中的字段名一致,不然页面数据传不到后台。这里只截图2个字段吧太长了其他的字段都一样该好名字就行

SpringBoot基于SpringSecurity表单登录和权限验证的示例

然后我们再来看下TeacherController中的代码:

SpringBoot基于SpringSecurity表单登录和权限验证的示例

这里面的代码是我之前没使用SpringSecurity的时候写的,现在注释掉了,当我们登录成功之后就会到/query这个路由下的方法去执行,也就是执行查询教师信息,先不看query方法,我们现在先来对接SpringSecurity,让它先帮我们来进行index中用户名和密码的登录验证,然后再看query方法

四、使用SpringSecurity进行表单验证登录

要想使用SpringSecurity就需要现在pom.xml中加入SpringSecurity的依赖,你可以指定版本号也可以不指定,我这里没有指定

SpringBoot基于SpringSecurity表单登录和权限验证的示例

注意:当你引入SpringSecurity之后当你再次去启动项目的时候,SpringSecurity自动会给你跳到一个对话框,让你输入账号和密码,这里的用户名是user,密码在你启动的时候它会有一个加密的密文,你只需要复制进去就可以登录。

接下来我们要想实现自定义的表单验证登录和其他高级功能就需要使用配置类来配置,在SpringBoot中新建一个配置类,让它来继承WebSecurityConfigurerAdapter,然后重写里面的configure方法,在里面定义我们的逻辑,来看下代码吧:

SpringBoot基于SpringSecurity表单登录和权限验证的示例

上面的是我项目中的配置,有些是本文用不到的,分别解释下:从开始来说,http.formLogin的作用是使用form表单进行登录,也就是我们的index页面。当然你也可以使用Batic登录,就是之前说的默认给你的登录信息界面。

SpringBoot基于SpringSecurity表单登录和权限验证的示例

SpringBoot基于SpringSecurity表单登录和权限验证的示例

扫一扫手机访问