security基本配置完成的
This commit is contained in:
parent
4251b1c4da
commit
0c7a42c4e8
5
pom.xml
5
pom.xml
|
@ -42,6 +42,11 @@
|
||||||
<artifactId>spring-boot-starter-tomcat</artifactId>
|
<artifactId>spring-boot-starter-tomcat</artifactId>
|
||||||
<scope>provided</scope>
|
<scope>provided</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.alibaba.fastjson2</groupId>
|
||||||
|
<artifactId>fastjson2</artifactId>
|
||||||
|
<version>2.0.25</version>
|
||||||
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.springframework.boot</groupId>
|
<groupId>org.springframework.boot</groupId>
|
||||||
<artifactId>spring-boot-starter-test</artifactId>
|
<artifactId>spring-boot-starter-test</artifactId>
|
||||||
|
|
|
@ -0,0 +1,22 @@
|
||||||
|
package com.example;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson2.JSONObject;
|
||||||
|
import com.alibaba.fastjson2.JSONWriter;
|
||||||
|
|
||||||
|
public record RestBean<T>(int code , T data , String message) {
|
||||||
|
public static <T> RestBean<T> success(T data){
|
||||||
|
return new RestBean<>(200, data ,"请求成功");
|
||||||
|
|
||||||
|
}
|
||||||
|
public static <T> RestBean<T> success(){
|
||||||
|
return success(null);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public static <T> RestBean<T> failure(int code , String message){
|
||||||
|
return new RestBean<>(code , null , message);
|
||||||
|
}
|
||||||
|
public String asJsonString(){
|
||||||
|
return JSONObject.toJSONString(this, JSONWriter.Feature.WriteNulls);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,69 @@
|
||||||
|
package com.example.config;
|
||||||
|
|
||||||
|
import com.example.RestBean;
|
||||||
|
import jakarta.servlet.ServletException;
|
||||||
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
|
import org.springframework.context.annotation.Bean;
|
||||||
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
|
||||||
|
import org.springframework.security.config.annotation.web.configurers.AbstractHttpConfigurer;
|
||||||
|
import org.springframework.security.config.http.SessionCreationPolicy;
|
||||||
|
import org.springframework.security.core.Authentication;
|
||||||
|
import org.springframework.security.core.AuthenticationException;
|
||||||
|
import org.springframework.security.web.SecurityFilterChain;
|
||||||
|
import org.springframework.security.web.authentication.AuthenticationFailureHandler;
|
||||||
|
import org.springframework.security.web.authentication.AuthenticationSuccessHandler;
|
||||||
|
import org.springframework.security.web.authentication.logout.LogoutSuccessHandler;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
@Configuration
|
||||||
|
public class SecurityConfiguration {
|
||||||
|
@Bean
|
||||||
|
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
|
||||||
|
return http
|
||||||
|
.authorizeHttpRequests(conf -> conf
|
||||||
|
.requestMatchers("/api/auth/**").permitAll()
|
||||||
|
.anyRequest().authenticated()
|
||||||
|
)
|
||||||
|
.formLogin(conf -> conf
|
||||||
|
.loginProcessingUrl("/api/auth/login")
|
||||||
|
.failureHandler(this::onAuthenticationFailure)
|
||||||
|
.successHandler(this::onAuthenticationSuccess)
|
||||||
|
|
||||||
|
)
|
||||||
|
.logout(conf -> conf
|
||||||
|
.logoutUrl("/api/auth/logout")
|
||||||
|
.logoutSuccessHandler(this::onLogoutSuccess)
|
||||||
|
)
|
||||||
|
|
||||||
|
.csrf(AbstractHttpConfigurer::disable)
|
||||||
|
.sessionManagement(conf -> conf
|
||||||
|
.sessionCreationPolicy(SessionCreationPolicy.STATELESS)
|
||||||
|
)
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void onAuthenticationSuccess(HttpServletRequest request,
|
||||||
|
HttpServletResponse response,
|
||||||
|
Authentication authentication) throws IOException, ServletException {
|
||||||
|
response.setContentType("application/json;charset=utf-8");
|
||||||
|
|
||||||
|
response.getWriter().write(RestBean.success().asJsonString());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void onAuthenticationFailure(HttpServletRequest request,
|
||||||
|
HttpServletResponse response,
|
||||||
|
AuthenticationException exception) throws IOException, ServletException {
|
||||||
|
response.setContentType("application/json;charset=utf-8");
|
||||||
|
response.getWriter().write(RestBean.failure(401 , exception.getMessage()).asJsonString());
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void onLogoutSuccess(HttpServletRequest request,
|
||||||
|
HttpServletResponse response,
|
||||||
|
Authentication authentication) throws IOException, ServletException {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue