码迷,mamicode.com
首页 > 编程语言 > 详细

Spring Security入门(2-3)HttpSecurity的使用

时间:2017-06-13 18:29:16      阅读:186      评论:0      收藏:0      [点我收藏+]

标签:接口   继承   包含   不同   pattern   支持   相关   lis   pre   

到目前为止我们的 SecurityConfig 只包含了关于如何验证我们的用户的信息。

Spring Security怎么知道我们想对所有的用户进行验证?
Spring Security怎么知道我们需要支持基于表单的验证?
原因是我们的SecurityConfig类继承的WebSecurityConfigurerAdapter在
configure(HttpSecurity http) 方法提供了一个默认的配置,
看起来和下面类似:

protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.anyRequest().authenticated()
.and()
.formLogin()
.and()
.httpBasic();
}

上面的默认配置说明:
确保我们应用中的所有请求都需要用户被认证
允许用户进行基于表单的认证
允许用户使用HTTP基本验证进行认证
你可以看到这个配置和下面的XML命名配置相似:

<http>

<intercept-url pattern="/**" access="authenticated"/>

<form-login />

<http-basic />

</http>

authorizeRequests(),formLogin()、httpBasic()这三个方法返回的分别是ExpressionUrlAuthorizationConfigurer、FormLoginConfigurer、HttpBasicConfigurer,他们都是SecurityConfigurer接口的实现类,分别代表的是不同类型的安全配置器。
总的来说:HttpSecurity是SecurityBuilder接口的一个实现类,从名字上我们就可以看出这是一个HTTP安全相关的构建器。当然我们在构建的时候可能需要一些配置,当我们调用HttpSecurity对象的方法时,实际上就是在进行配置。
配置的最终结果是什么?
基本上每个SecurityConfigurer子类都对应一个或多个过滤器
可见ExpressionUrlAuthorizationConfigurer、FormLoginConfigurer、HttpBasicConfigurer三个配置器对应的Filter分别是FilterSecurityInterceptor、UsernamePasswordAuthenticationFilter、BasicAuthenticationFilter。
而HttpSecuirty内部维护了一个Filter的List集合,我们添加的各种安全配置器对应的Filter最终都会被加入到这个List集合中。
配置表单登录
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage( "/login")// 1
.permitAll(); // 2
}

1、更新后的配置,指定了登录页面的位置
2、我们必须允许所有的用户,不管是否登录,都可以访问这个页面。 formLogin().permitAll()允许所有用户访问这个页面。
可以自定义用户名和密码的参数名,但是无法修改POST方法请求/login这个URL

.formLogin()
.loginPage( "/login")
.usernameParameter("uname")//自定义用户名参数名称
.passwordParameter("pwd")//自定义密码参数名称

Spring Security入门(2-3)HttpSecurity的使用

标签:接口   继承   包含   不同   pattern   支持   相关   lis   pre   

原文地址:http://www.cnblogs.com/lexiaofei/p/7002621.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!