0
点赞
收藏
分享

微信扫一扫

Spring Security学习(一)


原理

Spring Security学习(一)_ide

当一个请求进来时,先经过各种过滤器(通过代码配置生效),比如UserName Password AuthenticationFilter(表单登录)、BasicAuthenticationFilter(Basic登录)等

最后经过FilterSecurityInterceptor,这是Spring Security验证的最后一步,如果验证通过则正常访问服务,如果验证不通过则会抛出异常

异常由ExceptionTranslationFilter捕获,根据异常来做不同处理,比如未登录,则跳转登录页面

使用Maven

因项目spring版本为4.X,所以选择的是4.2.3.RELEASE版本

<!--核心-->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-core</artifactId>
<version>4.2.3.RELEASE</version>
</dependency>
<!--web-->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-web</artifactId>
<version>4.2.3.RELEASE</version>
</dependency>
<!--配置-->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-config</artifactId>
<version>4.2.3.RELEASE</version>
</dependency>

配置类Security

创建WebSecurityConfig

@Configuration
// 使用Security
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.formLogin().and().authorizeRequests().anyRequest().authenticated();
}
}

上段代码说明访问的请求基于表单验证,并且所有请求都需要用户被认证

如果我们在应用程序的其他地方已经使用了Spring,那么我们已经有了一个 WebApplicationInitializer用来载入Spring的配置。所以我们应该使用已经存在的 ApplicationContext 注册Spring Security。

创建SecurityWebApplicationInitializer

public class SecurityWebApplicationInitializer 
extends AbstractSecurityWebApplicationInitializer {
}

创建一个扩展 AbstractSecurityWebApplicationInitializer 的一个类, 它将会自动地加载 springSecurityFilterChain,相当于配置web.xml

public class WebAppInitializer extends
AbstractAnnotationConfigDispatcherServletInitializer {

@Override
protected Class<?>[] getRootConfigClasses() {
return new Class[] { WebSecurityConfig.class };
}

// ... other overrides ...
}

现在访问网站任意地址都会提示到跳转登录了


Spring Security学习(一)_登录页面_02

举报

相关推荐

0 条评论