簡體   English   中英

在Java中存儲MySQL登錄信息的最佳方法

[英]Best way to store MySQL login information in Java

在Java應用程序中存儲MySQL登錄配置設置的最佳方法是什么。

我想在Java中使用MySQL連接並對此感到好奇

主機/數據庫/登錄名/密碼

存儲。 我的程序打算使用多線程,並向每個類寫入固定的登錄信息,看起來並不好。 存儲可以多次使用的身份驗證數據的最佳方法是什么?

例如,在PHP中,通常使用全局變量創建mysqlinfo.php並包含在每個文件中。 如果某些數據發生更改,則只需修改mysqlinfo.php

但是Java呢? 我應該使用全局變量還是應該存儲登錄名/密碼/等。 在每個類的私有字符串中?

如果它是服務器應用程序(在應用程序或Web服務器中運行),則可以使用JNDI DataSource。 或者,您可以將它們存儲在環境變量中。

對於桌面應用程序,您可以使用屬性文件並從中讀取值。 同樣,從環境變量讀取它們是另一種選擇。

答案可能取決於您正在制作的應用程序類型。 由於您提到了php,所以我想您需要一個基於Web的應用程序。 對於基於Web的應用程序,我希望將其用作JNDI數據源。 使用JNDI,您將不會在代碼中存儲任何用戶ID,密碼等。

在Java中,對於全局變量,只需創建一個公共類,然后在其中定義您的全局屬性為static,然后調用該類。

例如:

public class Globals{
public static String a;
public static int b;
}

可以通過調用Globals.a & Globals.b像全局變量一樣使用它,但是它不是很好的代碼方式。 為了獲得更好的安全性,請使用Amir和Kumar提到的JNDI。

這完全取決於登錄信息是否應保密。 對於桌面應用程序,JNDI似乎有點過大,因為您需要自己進行管理。

基本上,您有2個選擇:

  1. 將設置保存在屬性文件中。 如果登錄信息需要保密,則可以對這些數據進行加密,以確保人們不僅可以讀取並使用該信息。
  2. 將信息固定在您的代碼中。 這不是一個非常可移植的解決方案,因為當您要更改任何此信息時,必須重新編譯所有內容。

通常,您想在應用程序外部管理連接信息,例如在配置文件中。 然后,您可以完全控制應用程序可以連接到的數據庫,而不會被硬編碼的數據庫所困擾。 如果無法將應用程序連接到測試數據庫或故障轉移數據庫而不必構建新版本,我將感到非常不滿!

另外,也許更重要的是:這樣,無需知道應用程序的內部組件,便可以進行管理。 您希望自己處於可以構建應用程序的位置,然后讓其他人擔心要支持它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM