Java程式演示使用者身份驗證


身份驗證是指在授予系統訪問許可權之前,驗證個人身份以確保使用者確實是他們聲稱的那個人身份的過程。為了確保系統的安全性和完整性,對使用者進行身份驗證非常重要。隨著時間的推移,身份驗證已經發展成為更加先進和安全的方法。

身份驗證方法現在已從使用者名稱、密碼和OTP等憑據擴充套件到指紋掃描、面部識別掃描等等。身份驗證確保敏感資源不會與未經授權的方共享,從而防止惡意攻擊並符合資料隱私法規。總的來說,它確保了系統的CIA(機密性、完整性和可用性)三要素。

在Java中有很多方法可以對使用者進行身份驗證,如下所示:

  • 僅使用字串

  • 使用HashMap

  • 使用自定義使用者類

  • 使用介面

我們現在將實現每種方法。

方法1:僅使用字串

這是一種非常直接的方法,其中使用2個字串儲存實際的或有效的或正確的使用者名稱和密碼,並使用2個字串儲存嘗試訪問的使用者輸入的使用者名稱和密碼。之後,我們只需使用Java的.equals()方法來比較使用者名稱和密碼字串。如果兩者都返回true,即如果使用者名稱和密碼都匹配,我們向控制檯列印“身份驗證成功”,如果它們不匹配,則表示身份驗證失敗,因此顯示相應的訊息。

示例

public class UserAuthenticationDemo {
   public static void main(String[] args) {
   
      // hardcode the actual username and password
      String validUsername = "user123";
      String validPassword = "password";
      
      // username and password entered by user
      String username = "user123";
      String password = "password";
      
      // Compare the user entered credentials with the actual ones
      if (username.equals(validUsername) && password.equals(validPassword)) {
         System.out.println("Authentication successful!");
      } else {
         System.out.println("Authentication failed.");
      }
   }
}

輸出

Authentication successful!

方法2:使用HashMap

HashMap是一種鍵值資料結構,其中鍵和值可以是任何資料型別。鍵必須是唯一的,嘗試重新輸入具有相同鍵的鍵值對會導致重寫原始條目。HashMap是java.util包的一部分。.put()方法可用於向HashMap新增鍵值對,而.get()方法用於在鍵的幫助下查詢值,.containsKey()方法用於檢查特定鍵是否存在於HashMap中。

示例

import java.util.HashMap;
public class UserAuthenticationDemo {
   public static void main(String[] args) {
   
      // Create a HashMap to store valid username and password pairs
      HashMap<String, String> validUsers = new HashMap<>();
      validUsers.put("user123", "password");
      validUsers.put("admin", "admin123");
      validUsers.put("superuser", "pAsSW0rd#");
      
      //store the username and password entered by user
      String username="user123";
      String password="password";
      
      // Check if the entered username and password match the valid ones in the HashMap
      if (validUsers.containsKey(username) && validUsers.get(username).equals(password)) {
         System.out.println("Authentication successful!");
      } else {
         System.out.println("Authentication failed.");
      }
   }
}

輸出

Authentication successful!

方法3:使用自定義使用者類

Java中的類是包含基本屬性和方法的藍圖,而物件是現實世界中的實體。

示例

在此示例中,我們將定義一個類,該類具有2個屬性,使用者名稱和密碼,以及2個getter函式來獲取使用者名稱和密碼。類的建構函式用於設定使用者名稱和密碼的值。然後,我們建立此類的物件並存儲使用者名稱和密碼欄位,之後我們使用getter函式獲取使用者名稱和密碼,以使用.equals()方法將它們與使用者輸入的憑據進行比較。

public class UserAuthenticationDemo {
   static class User {
      private String username;
      private String password;
      public User(String username, String password) {
         this.username = username;
         this.password = password;
      }
      public String getUsername() {
         return username;
      }
      public String getPassword() {
         return password;
      }
   }
   public static void main(String[] args) {
   
      // Create a User object to store the valid username and password
      User validUser = new User("user123", "password");
      
      //store the username and password entered by user
      String username="user123";
      String password="password";
      
      // Check if the entered username and password match the valid ones in the User object
      if (username.equals(validUser.getUsername()) && password.equals(validUser.getPassword())) {
         System.out.println("Authentication successful!");
      } else {
         System.out.println("Authentication failed.");
      }
   }
}

輸出

Authentication successful!

方法4:使用介面

介面是類的藍圖,允許我們實現抽象。抽象意味著隱藏實現的細節,就像您駕駛汽車時,您無需瞭解內部工作原理一樣。在這裡,我們建立一個包含身份驗證方法的介面。介面也可以被視為類遵循的一組規則,它提供程式碼可重用性。

示例

// Interface for user authentication
interface UserAuthenticator {
   boolean authenticate(String username, String password);
}

// Implementation of user authentication interface
class SimpleUserAuthenticator implements UserAuthenticator {
   private String storedUsername = "myusername";
   private String storedPassword = "mypassword";
   @Override
   public boolean authenticate(String username, String password) {
   
      // Check if the provided credentials match the stored credentials
      if (username.equals(storedUsername) && password.equals(storedPassword)) {
         return true;
      }
      return false;
   }
}

// Main class to demonstrate user authentication
public class UserAuthenticationDemo {
   public static void main(String[] args) {
   
      // Create an instance of the SimpleUserAuthenticator class
      UserAuthenticator authenticator = new SimpleUserAuthenticator();
      
      //store the username and password entered by user
      String username="myusername";
      String password="mypassword";
      
      // Authenticate the user
      if (authenticator.authenticate(username, password)) {
         System.out.println("Authentication successful!");
      } else {
         System.out.println("Authentication failed.");
      }
   }
}

輸出

Authentication successful!

結論

使用者身份驗證對於確保CIA(機密性、完整性和可用性)三要素到位至關重要。任何未經授權的人員不得訪問任何型別的的資訊或資料,因此添加了使用者身份驗證。隨著時間的推移,根據用例,已經實施了諸如OTP、登入ID和密碼、生物識別等身份驗證方法。我們已經使用Java實現了使用者身份驗證,該身份驗證利用了使用者名稱和密碼等登入憑據。

更新於: 2023年4月6日

2K+ 瀏覽量

開啟您的職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.