过滤器名称 | 作用 |
---|---|
BasicAuthenticationFilter | 如果在请求中找到一个Basic Auth Http头,如果找到,则尝试用该头中的用户名和密码验证用户 |
UsernamePasswordAuthenticationFilter | 若在请求参数或者Post的RequestBody中找到用户名和密码,则尝试用这些值对用户进行身份验证 |
DefaultLoginPageGeneratingFiltler | 默认登录页面生成过滤器,用于生成一个登录页面,若没有明确禁用这个功能,那么就会生成一个登录页面。这就是为什么在启用SpringSecurity时候,会得到一个默认的页面的原因 |
DefaultLogoutPageGeneratingFilter | 若没有禁用该功能,则会生成一个注销页面 |
FilterSecurityInterceptor | 过滤安全拦截器,用于授权逻辑 |
<dependency>
<groupId>org.webjars</groupId>
<artifactId>webjars-locator-core</artifactId>
</dependency>
<dependency>
<groupId>org.webjars</groupId>
<artifactId>bootstrap</artifactId>
<version>${bootstrap.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
SecurityConfig
package com.vleus.uaa.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.Customizer;
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;
/**
* @author vleus
* @date 2022年05月17日 22:45
*/
@EnableWebSecurity(debug = true)
public class SecurityConfig extends WebSecurityConfigurerAdapter {
/**
* 走过滤器链
* @param http
* @throws Exception
*/
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf(csrf -> csrf.disable())
.httpBasic(Customizer.withDefaults())
.formLogin(form -> form.loginPage("/login"))
.authorizeRequests(req -> req.antMatchers("/api/**").authenticated());
}
/**
* 设置不启用过滤器链
* @param web
* @throws Exception
*/
@Override
public void configure(WebSecurity web) throws Exception {
web.ignoring().mvcMatchers("/public/**");
}
}
路径映射类
package com.vleus.uaa.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.Ordered;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
/**
* 映射url与模板文件路径
* @author vleus
* @date 2022年05月22日 20:59
*/
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
/**
* 将webjar的静态资源加入到映射中
* @param registry
*/
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/webjars/**")
.addResourceLocations("/webjars")
.resourceChain(false);
registry.setOrder(1);
}
/**
* 文件路径和url进行映射
* @param registry
*/
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/login")
.setViewName("login");
registry.setOrder(Ordered.HIGHEST_PRECEDENCE);
}
}
Hash:md5(用户名+过期时间+密码+key)