9.1Spring Security简介
Spring Security是基于Spring AOP与Servlet规范中Filter实现的安全框架。
Spring Security借助于一系列Servlet Filter来提供各种安全功能。
DelegatingFilterProxy是一个特殊的Servlet,它本身所做的工作并不多,只是将工作委托给
Javax.Servlet.Filter实现类,这个实现类作为一个<bean>注册在Spring应用上下文中,这个bean会链接一个或者多个Filter从而实现SpringSecurity的安全性。

9.1.1在web.xml中配置DelegatingFilterProxy

这里最重要的将<filter-name>设置为springsecurityFilterChain,DelegatingFilterProxy会将过滤逻辑委托为它。
9.1.2借助于WebApplicationInitializer以java配置的方式配置DelegatingFilterProxy。
package spittr.config;SpringSecutiryFilterChain是一个特殊的Filter。它可以链接一个或者多个filter。SpringSecurity依赖一系列Servlet Filter来提供不同的安全特性。但我们启用web安全性的时候,会自动创建这些Filter。然后两者的关联久建立来。
import org.springframework.security.web.context.AbstractSecurityWebApplicationInitializer;
/**
* @version 版权 Copyright(c)2019
* @ClassName:
* @Descripton: 使用java配置的方式配置DelegatingFilterProxy,DelegatingFilterProxy会将
* 逻辑委托为SpringSecurityFilterChain的Filter bean
* @author: Shing
* @date: 2020-07-02 07:20
*/
/**
* AbstractSecurityWebApplicationInitializer实现了WebApplicationinitializer,因此Spring
* 会发现它,并用它在Web容器中注册DelegatingFilterProxy。
*/
public class SecurityWebInitializer extends AbstractSecurityWebApplicationInitializer {
}
9.1.3编写简单的安全性配置
package spittr.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.builders.WebSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.config.annotation.web.configurers.ExpressionUrlAuthorizationConfigurer;
import org.springframework.security.config.annotation.web.servlet.configuration.EnableWebMvcSecurity;
/**
* @version 版权 Copyright(c)2019
* @ClassName:
* @Descripton: 配置Spring Security安全机制
* @author: Shing
* @date: 2020-07-01 18:54
*/
/**
* EnableWebSecurity可以启用任意Web应用的安全性功能
* 不过你的应用恰巧是Spring mvc,那么使用@EnableWebMvcSecurity
*
* 开启Spring Security后,它做了两件事情
* 1.配置了一个Spring Mvc 参数解析器,可以通过@AuthenticationPrincipal获取认证用户
* 2.同时配置了一个bean,在spring使用表单绑定标签库来定义表单时,这个bean会自动添加一个隐藏的跨域请求伪造token输入域
*/
@Configuration
@EnableWebMvcSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
/**
* 通过重载,配置user-detail服务
* @param auth
* @throws Exception
*/
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
super.configure(auth);
}
/**
* 通过重载,配置Spring Security的Filter链
* @param web
* @throws Exception
*/
@Override
public void configure(WebSecurity web) throws Exception {
super.configure(web);
}
/**
* 通过重载,配置如果通过拦截器保护请求
* @param http
* @throws Exception
*/
@Override
protected void configure(HttpSecurity http) throws Exception {
super.configure(http);
// ((HttpSecurity) ((HttpSecurity) ((ExpressionUrlAuthorizationConfigurer.AuthorizedUrl) http.authorizeRequests().anyRequest()).authenticated().and()).formLogin().and()).httpBasic();
//默认配置,要求所有进入应用的http请求都要认证,也配置了支持基于表单的登录以及http basic方式认证
}
}

浙公网安备 33010602011771号