http
.authorizeRequests()
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/login")
.permitAll();
如上:
可以认为 and() 是将方法链接在一起的一种方式。and()在特定的Configurer上配置选项后,通常可以使用一种方法。例如
http
.someConfigurer
.<some feature of configurer>()
.<some feature of configurer>()
.and()
.someOtherConfigurer
.<some feature of someOtherConfigurer>()
...
.and()
...
您会注意到,http对象上的第一级调用是配置程序
.formLogin() --> FormLoginConfigurer
.httpBasic() --> HttpBasicConfigurer()
.sessionManagement() --> SessionManagementConfigurer
配置器之后的下一层是您要调整的特定配置器的属性。例如
formLogin()
.loginPage("/login")
.permitAll()
.and()
将and() 在末端返回一个 builder(HttpSecurity在我们的例子)。因此,我们可以使用该**and()**方法链接其他配置器。
该方法本身来自SecurityConfigurerAdapter类。该 and() 方法ExpressionUrlAuthorizationConfigurer.ExpressionInterceptUrlRegistry又调用上述方法。