自定义用户登录验证时的页面
之前我们在SpringSecurity中的登录验证的页面都是SpringSecurity默认的,并且默认所有的访问请求都需要先经过SpringSecurity的登录验证,那么我们可不可以设置一些不需要SpringSecurity登录验证可以直接进行访问的请求呢?我们可以不可以自定义我们需要访问的登录验证时的页面呢?答案都是可以的,具体应该怎样操作,请参照下面的内容。
1.在SpringSecurity的配置类中进行配置
配置类中的配置如下图:
注意上图中
.anyRequest()
.authenticated()
的作用,这两个方法的作用是,保证所有的请求都必须要经过登录验证,
antMatchers(请求).permitAll()中的请求除外,因为如果antMatchers方法后面调用的是permitAll方法那么antMatchers里面的请求就不用进行登录验证了;如果没有写.anyRequest().authenticated()那么只要不是类似于antMatchers(“请求”).hasRole(…)或者antMatchers(“请求”).hasAuthority(…)的请求都可以不登录验证,然后直接就可以访问了,我们在使用SpringSecurity的时候肯定不希望这个样子,所以一定要记得加上.anyRequest().authenticated()
2.自定义的登录页面login.html
自定义的登录页面如下图:
为什么登录页面login.html中的用户名和密码对应的name必须是username和password,请看源码中的规定,如下图:
3.对应的控制器
对应的控制器如下图所示:
4.测试
在浏览器中输入地址localhost:8888/test/index之后,登录验证的页面如下图所示:
可以发现,这就是我们刚才自定义的登录页面。