Merge remote-tracking branch 'origin/master'
This commit is contained in:
@@ -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. 动态允许公共端点
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user