Java 验证器类用于验证网络连接。该类是一个标准的 Java 类。 Authenticator 类用于需要用户身份验证才能访问某些 URL 的应用程序。身份验证器类通过提示用户输入用户名和密码等凭证信息来执行身份验证。
开始您的免费软件开发课程
网络开发、编程语言、软件测试及其他
要在应用程序中执行身份验证,应用程序需要执行一些步骤;首先,应用程序类扩展 java.net.Authenticator 类,并重写子类中 java.net.Authenticator 类的 getPasswordAuthentication() 函数。通常,该函数包含 getXXX() 函数来获取用于身份验证的用户信息,例如用户名和密码。 getPasswordAuthentication() 函数返回包含凭据信息的 PasswordAuthentication 值。
Java中Authenticator类的语法是-
public abstract class Authenticator extends Object { // code of the authenticator class }
让我们看一下可用于身份验证的 Authenticator 类成员函数的完整列表。
1。 getPasswordAuthentication() – 当需要密码时,使用此函数。所有子类都应该重写 getPasswordAuthentication(),默认返回 null。
语法 –
protected PasswordAuthentication getPasswordAuthentication();
2。 getRequestingHost() – 此函数检索请求身份验证的站点的主机名,如果未找到主机名,则返回 null。
语法 –
protected final String getRequestingHost();
3。 getRequestingPort() – 该函数用于获取请求连接的端口号。
语法 –
protected final int getRequestingPort();
4。 getRequestingPrompt() –该函数用于提示请求者的字符串消息。
语法 –
protected final String getRequestingPrompt();
5。 getRequestingProtocol() – 该函数用于获取请求连接的协议。
语法 –
protected final int getRequestingProtocol();
6。 getRequestingScheme() – 此函数用于删除请求者站点的方案。
语法 –
protected final String getRequestingScheme();
7。 getRequestingSite() – 该函数用于获取请求站点的 InetAddress,如果不存在 InetAddress,则返回 null。
语法 –
protected final InetAddress getRequestingSite();
8。 getRequestingURL() – 该函数用于获取请求者的 URL。
语法 –
protected URL getRequestingURL();
9。 setDefault(Authenticator a) – 用于设置 HTTP 服务器需要身份验证时联网使用的验证器。
语法 –
public static void setDefault(Authenticator a);
10。 getRequestorType() – 该函数用于获取请求者是服务器还是代理。
语法 –
protected Authenticator.RequestorType getRequestorType();
接下来,我们编写 Java 代码来更清楚地理解 Authenticator 类,在下面的示例中,我们创建 Authenticator 类的子类并重写 getPasswordAuthentication() 函数来对某些 URL 执行身份验证,如下 –
代码:
package p1; import java.io.BufferedReader; import java.io.IOException; import java.net.URL; import java.io.InputStreamReader; import java.net.Authenticator; import java.net.PasswordAuthentication; import java.net.MalformedURLException; class MyAuthenticatorclass extends Authenticator { protected PasswordAuthentication getPasswordAuthentication() { String username = "John", password = "pass123"; this.print(); return new PasswordAuthentication(username, password.toCharArray()); } void print() { int hostname = getRequestingPort(); System.out.println("The request Port number :" + hostname); } } public class Demo { public static void main(String[] arg) { String data; try { //create object of authenticator class MyAuthenticatorclass obj =new MyAuthenticatorclass(); Authenticator.setDefault(new MyAuthenticatorclass()); URL url = new URL("https://www.educba.com/"); // reads data from the url in html form BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream())); System.out.println("The requesting URL is : "+url.getHost()); obj.getPasswordAuthentication() ; while ((data = br.readLine()) != null) { System.out.println(data); } br.close(); } catch (MalformedURLException e) { System.out.println("Malformed URL Exception : " + e); } catch (IOException e) { System.out.println("IO Exception: " + e); } } }
输出:
接下来,我们编写java代码来理解Authenticator类,我们尝试在重写的getPasswordAuthentication()函数中获取所有信息,如下 –
代码:
package p1; import java.io.BufferedReader; import java.io.IOException; import java.net.URL; import java.io.InputStreamReader; import java.net.Authenticator; import java.net.InetAddress; import java.net.PasswordAuthentication; import java.net.MalformedURLException; class MyAuthenticatorclass extends Authenticator { protected PasswordAuthentication getPasswordAuthentication() { String username = "John", password = "pass123"; this.print(); return new PasswordAuthentication(username, password.toCharArray()); } void print() { // get all information String prom = getRequestingPrompt(); URL url = getRequestingURL(); int prt = getRequestingPort(); String hostname = getRequestingHost(); InetAddress ipaddress = getRequestingSite(); String sh = getRequestingScheme(); RequestorType rt = getRequestorType(); String protocol = getRequestingProtocol(); System.out.println("The prompt is :" + prom+"\nThe hostname is :" + hostname+"\nThe ipaddress is :" + ipaddress+"\nThe port no is :" + prt); System.out.println("The protocol is :" + protocol+"\nThe scheme is :" + sh+"\nThe URL is :" + url+"\nThe Requester Type is :" + rt); } } public class Demo { public static void main(String[] arg) { String data; try { //create object of authenticator class MyAuthenticatorclass obj =new MyAuthenticatorclass(); Authenticator.setDefault(new MyAuthenticatorclass()); URL url = new URL("https://www.educba.com/"); // reads data from the url in html form BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream())); System.out.println("The requesting URL is : "+url.getHost()); obj.getPasswordAuthentication() ; while ((data = br.readLine()) != null) { System.out.println(data); } br.close(); } catch (MalformedURLException e) { System.out.println("Malformed URL Exception : " + e); } catch (IOException e) { System.out.println("IO Exception: " + e); } } }
输出:
上面的代码正在尝试获取与身份验证相关的所有信息。
javaauthenticator类是一个内置的java类,用于处理URL或网络连接认证。正如我们所看到的,这个内置类有十个函数,每个函数都可以用于特定目的。
以上是Java验证器的详细内容。更多信息请关注PHP中文网其他相关文章!