From cdca396da3caeb9109fa5d31ddac707eba50cac5 Mon Sep 17 00:00:00 2001 From: Looly Date: Wed, 16 Jun 2021 11:40:10 +0800 Subject: [PATCH] add UserPassAuthenticator --- CHANGELOG.md | 5 +-- .../main/java/cn/hutool/core/net/NetUtil.java | 22 +++++++++++++ .../core/net/UserPassAuthenticator.java | 33 +++++++++++++++++++ 3 files changed, 58 insertions(+), 2 deletions(-) create mode 100644 hutool-core/src/main/java/cn/hutool/core/net/UserPassAuthenticator.java diff --git a/CHANGELOG.md b/CHANGELOG.md index febc11770..74165a24f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,15 +3,16 @@ ------------------------------------------------------------------------------------------------------------- -# 5.7.2 (2021-06-17) +# 5.7.2 (2021-06-16) ### 🐣新特性 +* 【core 】 增加UserPassAuthenticator ### 🐞Bug修复 ------------------------------------------------------------------------------------------------------------- -# 5.7.1 (2021-06-17) +# 5.7.1 (2021-06-16) ### 🐣新特性 * 【db 】 NamedSql支持in操作(issue#1652@Github) diff --git a/hutool-core/src/main/java/cn/hutool/core/net/NetUtil.java b/hutool-core/src/main/java/cn/hutool/core/net/NetUtil.java index 7034df91a..cc137f926 100644 --- a/hutool-core/src/main/java/cn/hutool/core/net/NetUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/net/NetUtil.java @@ -11,6 +11,7 @@ import cn.hutool.core.util.StrUtil; import java.io.IOException; import java.io.OutputStream; import java.math.BigInteger; +import java.net.Authenticator; import java.net.DatagramSocket; import java.net.HttpCookie; import java.net.IDN; @@ -766,6 +767,27 @@ public class NetUtil { return false; } } + + /** + * 设置全局验证 + * + * @param user 用户名 + * @param pass 密码,考虑安全,此处不使用String + * @since 5.7.2 + */ + public static void setGlobalAuthenticator(String user, char[] pass) { + setGlobalAuthenticator(new UserPassAuthenticator(user, pass)); + } + + /** + * 设置全局验证 + * + * @param authenticator 验证器 + * @since 5.7.2 + */ + public static void setGlobalAuthenticator(Authenticator authenticator) { + Authenticator.setDefault(authenticator); + } // ----------------------------------------------------------------------------------------- Private method start /** diff --git a/hutool-core/src/main/java/cn/hutool/core/net/UserPassAuthenticator.java b/hutool-core/src/main/java/cn/hutool/core/net/UserPassAuthenticator.java new file mode 100644 index 000000000..0cbf74cc6 --- /dev/null +++ b/hutool-core/src/main/java/cn/hutool/core/net/UserPassAuthenticator.java @@ -0,0 +1,33 @@ +package cn.hutool.core.net; + +import java.net.Authenticator; +import java.net.PasswordAuthentication; + +/** + * 账号密码形式的{@link Authenticator} + * + * @author looly + * @since 5.7.2 + */ +public class UserPassAuthenticator extends Authenticator { + + private final String user; + private final char[] pass; + + /** + * 构造 + * + * @param user 用户名 + * @param pass 密码 + */ + public UserPassAuthenticator(String user, char[] pass) { + this.user = user; + this.pass = pass; + } + + @Override + protected PasswordAuthentication getPasswordAuthentication() { + return new PasswordAuthentication(this.user, this.pass); + } + +}