Merge remote-tracking branch 'origin/master'

This commit is contained in:
ikmkj
2025-08-04 19:45:59 +08:00
6 changed files with 372 additions and 22 deletions

View File

@@ -45,11 +45,14 @@ public class SecurityConfig {
@Value("${jwt.tokenHead}")
private String tokenHead;
// 配置了密码编码器
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
// 配置了安全过滤器链
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
JwtAuthenticationTokenFilter jwtAuthenticationTokenFilter = new JwtAuthenticationTokenFilter(userDetailsService, jwtTokenUtil, tokenHeader, tokenHead);
@@ -69,7 +72,7 @@ public class SecurityConfig {
};
http
.csrf(csrf -> csrf.disable())
.csrf(csrf -> csrf.disable()) // 配置了 CSRF 禁用、无状态会话管理
.sessionManagement(session -> session.sessionCreationPolicy(SessionCreationPolicy.STATELESS))
.authorizeHttpRequests(authz -> authz
// 1. 动态允许公共端点

View File

@@ -37,7 +37,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
if (ObjectUtil.isNull(user)) {
throw new UsernameNotFoundException("User not found with username: " + username);
}
return new org.springframework.security.core.userdetails.User(user.getUsername(), user.getPassword(), new ArrayList<>());
return new org.springframework.security.core.userdetails.User(user.getUsername(), user.getPassword(), new ArrayList<>()); // 账号,密码,权限
}
@Override

View File

@@ -0,0 +1,267 @@
package com.test.bijihoudaun.util;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.ZoneId;
import java.time.Instant;
import java.util.Date;
/**
* 时间工具类
* 提供常用的时间操作方法
*
* @author CodeGeeX
* @since 2024
*/
public class DateTimeUtil {
// 常用的时间格式
public static final String DEFAULT_DATETIME_FORMAT = "yyyy-MM-dd HH:mm:ss";
public static final String DEFAULT_DATE_FORMAT = "yyyy-MM-dd";
public static final String DEFAULT_TIME_FORMAT = "HH:mm:ss";
public static final String COMPACT_DATETIME_FORMAT = "yyyyMMddHHmmss";
public static final String COMPACT_DATE_FORMAT = "yyyyMMdd";
/**
* 获取当前时间LocalDateTime
*
* @return 当前时间
*/
public static LocalDateTime getCurrentDateTime() {
return LocalDateTime.now();
}
/**
* 获取当前日期LocalDate
*
* @return 当前日期
*/
public static LocalDate getCurrentDate() {
return LocalDate.now();
}
/**
* 获取当前时间戳(毫秒)
*
* @return 当前时间戳
*/
public static long getCurrentTimestamp() {
return System.currentTimeMillis();
}
/**
* 获取当前时间戳(秒)
*
* @return 当前时间戳(秒)
*/
public static long getCurrentTimestampSeconds() {
return System.currentTimeMillis() / 1000;
}
/**
* 字符串转LocalDateTime
* 使用默认格式yyyy-MM-dd HH:mm:ss
*
* @param dateTimeStr 时间字符串
* @return LocalDateTime对象
*/
public static LocalDateTime stringToDateTime(String dateTimeStr) {
return stringToDateTime(dateTimeStr, DEFAULT_DATETIME_FORMAT);
}
/**
* 字符串转LocalDateTime
*
* @param dateTimeStr 时间字符串
* @param pattern 时间格式
* @return LocalDateTime对象
*/
public static LocalDateTime stringToDateTime(String dateTimeStr, String pattern) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern);
return LocalDateTime.parse(dateTimeStr, formatter);
}
/**
* 字符串转LocalDate
* 使用默认格式yyyy-MM-dd
*
* @param dateStr 日期字符串
* @return LocalDate对象
*/
public static LocalDate stringToDate(String dateStr) {
return stringToDate(dateStr, DEFAULT_DATE_FORMAT);
}
/**
* 字符串转LocalDate
*
* @param dateStr 日期字符串
* @param pattern 日期格式
* @return LocalDate对象
*/
public static LocalDate stringToDate(String dateStr, String pattern) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern);
return LocalDate.parse(dateStr, formatter);
}
/**
* LocalDateTime转字符串
* 使用默认格式yyyy-MM-dd HH:mm:ss
*
* @param dateTime LocalDateTime对象
* @return 时间字符串
*/
public static String dateTimeToString(LocalDateTime dateTime) {
return dateTimeToString(dateTime, DEFAULT_DATETIME_FORMAT);
}
/**
* LocalDateTime转字符串
*
* @param dateTime LocalDateTime对象
* @param pattern 时间格式
* @return 时间字符串
*/
public static String dateTimeToString(LocalDateTime dateTime, String pattern) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern);
return dateTime.format(formatter);
}
/**
* LocalDate转字符串
* 使用默认格式yyyy-MM-dd
*
* @param date LocalDate对象
* @return 日期字符串
*/
public static String dateToString(LocalDate date) {
return dateToString(date, DEFAULT_DATE_FORMAT);
}
/**
* LocalDate转字符串
*
* @param date LocalDate对象
* @param pattern 日期格式
* @return 日期字符串
*/
public static String dateToString(LocalDate date, String pattern) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern);
return date.format(formatter);
}
/**
* 时间戳转LocalDateTime
*
* @param timestamp 时间戳(毫秒)
* @return LocalDateTime对象
*/
public static LocalDateTime timestampToDateTime(long timestamp) {
return LocalDateTime.ofInstant(Instant.ofEpochMilli(timestamp), ZoneId.systemDefault());
}
/**
* LocalDateTime转时间戳
*
* @param dateTime LocalDateTime对象
* @return 时间戳(毫秒)
*/
public static long dateTimeToTimestamp(LocalDateTime dateTime) {
return dateTime.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli();
}
/**
* Date转LocalDateTime
*
* @param date Date对象
* @return LocalDateTime对象
*/
public static LocalDateTime dateToDateTime(Date date) {
return date.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
}
/**
* LocalDateTime转Date
*
* @param dateTime LocalDateTime对象
* @return Date对象
*/
public static Date dateTimeToDate(LocalDateTime dateTime) {
return Date.from(dateTime.atZone(ZoneId.systemDefault()).toInstant());
}
/**
* 获取当前时间的字符串表示
* 使用默认格式yyyy-MM-dd HH:mm:ss
*
* @return 当前时间字符串
*/
public static String getCurrentDateTimeString() {
return dateTimeToString(getCurrentDateTime());
}
/**
* 获取当前时间的字符串表示
*
* @param pattern 时间格式
* @return 当前时间字符串
*/
public static String getCurrentDateTimeString(String pattern) {
return dateTimeToString(getCurrentDateTime(), pattern);
}
/**
* 获取当前日期的字符串表示
* 使用默认格式yyyy-MM-dd
*
* @return 当前日期字符串
*/
public static String getCurrentDateString() {
return dateToString(getCurrentDate());
}
/**
* 获取当前日期的字符串表示
*
* @param pattern 日期格式
* @return 当前日期字符串
*/
public static String getCurrentDateString(String pattern) {
return dateToString(getCurrentDate(), pattern);
}
/**
* 检查字符串是否为有效的日期时间格式
*
* @param dateTimeStr 日期时间字符串
* @param pattern 格式模式
* @return 是否有效
*/
public static boolean isValidDateTime(String dateTimeStr, String pattern) {
try {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern);
LocalDateTime.parse(dateTimeStr, formatter);
return true;
} catch (Exception e) {
return false;
}
}
/**
* 检查字符串是否为有效的日期格式
*
* @param dateStr 日期字符串
* @param pattern 格式模式
* @return 是否有效
*/
public static boolean isValidDate(String dateStr, String pattern) {
try {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern);
LocalDate.parse(dateStr, formatter);
return true;
} catch (Exception e) {
return false;
}
}
}