-
`
org.springframework.boot
spring-boot-starter-security
引入jar -
extends WebSecurityConfigurerAdapter 用来配置登陆和权限
-
configure(HttpSecurity http) 覆盖这个方法
-
//配置授权相关的
.authorizeRequests ()
//任何请求
.anyRequest()
//要求授权后可以访问
.authenticated(); -
spring security 的实现原理,是一系列的filter。 UsernamePasswordAuthenticationFilter 用于表单的用户名和密码的验证,用于处理exception的ExceptionTranslationFilter 。最后的过滤器这个之后就是直接访问我们的其你去了FilterSecurityInterceptor 。
-
因为我们要提交用户名密码,所以spring有个专门处理这个的接口。UserDetailsService 。
-
如何自定义用户获取信息的,如何校验,密码的加密解密 UserDetailService 主要是根据String 的用户名,获取相对应的密码。无论是从哪里查
-
UserDetail 可以处理用户的锁定,用户的失效,密码过期问题。
-
自己设置登陆页面 http
//.httpBasic().formLogin()//自己的登陆页面。如果是springboot项目,这个地址是一个mapping的地址。在mapping中设置跳转的html也就是mvc的模式。.loginPage("/homeLogin")// 这个是登陆页面提交的mapping地址。其实也就是UserNamePassword 那个filter 默认处理的地址是 /login,设置后,就是新的这个地址,filter会自动处理。拿到username和password等等,以及之后的流程。.loginProcessingUrl("/userLogin").and()//配置授权先关的.authorizeRequests ()//因为下面几行的访问限制是所有的路径,所以这块是放行登陆页面,如果不放行,会一直请求登陆页面,但是又没有权限,也就是循环请求了,浏览器会报重定向次数过多。.antMatchers("/homeLogin").permitAll()//任何请求.anyRequest()//要求授权后可以访问.authenticated().and()//这个如果不配置。在新版的security中,登陆页面输入用户名和密码提交会一直刷新登陆页面。所以这是必须配置的,让这个安全配置失效.csrf().disable();
-
在上面这些配置下,完成自定义登陆页面。可以在输入正确的用户密码的情况下,请求mapping。如果错误,暂时没有定义错误页面,因为别的页面没有权限,还是会跳转到登陆页面