You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java 8+实现密码45天过期校验(适配Spring Security单行写法)

实现Java 8+密码过期日期判断的单行代码方案

当然可行!你想要的单行代码完全能搞定,而且特别适配Spring Security里的这类校验场景。先明确你的核心需求:如果密码修改时间距离当前时间超过45天,返回false;否则返回true。

直接可用的单行代码实现

这里给你两种简洁的写法,都是纯单行逻辑,能直接嵌入Spring Security的校验流程:

第一种基于LocalDateTime的日期偏移判断:

private boolean isPasswordNotExpired(LocalDateTime passwordChangedAt) {
    return !passwordChangedAt.plusDays(45).isBefore(LocalDateTime.now());
}

第二种和你原来的多行代码逻辑完全对齐,用Duration计算天数差:

private boolean isPasswordNotExpired(LocalDateTime passwordChangedAt) {
    return Duration.between(passwordChangedAt, LocalDateTime.now()).toDays() <= 45;
}

逻辑简单解释

  • 第一种写法:给密码修改日期加上45天,得到过期临界日期。如果这个临界日期不早于当前时间,说明还没到过期时间,返回true;反之则返回false。
  • 第二种写法:直接计算从密码修改到现在的天数差,只要差值≤45就返回true,超过45天则返回false,和你原来的多行代码功能完全一致,但更紧凑。

对你提供的示例代码的调整

你原来写的boolean isExpired = password_changed_at.minusDays(45).isBefore(LocalDateTime.now()); 这里的isExpired为true时表示密码已过期,要是贴合你的需求(过期返回false),只需要取反就行:

boolean isPasswordValid = !password_changed_at.minusDays(45).isBefore(LocalDateTime.now());

内容的提问来源于stack exchange,提问作者Peter Penzov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 06:32:31