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
相关产品推荐
相关产品推荐

