2009-11-26 91 views
0

我在做這件事上遇到了一些困難。使用Perl的HTML :: Mason進行登錄會話的最佳方式是什麼?

我有一個登錄的HTML表單,我想知道,如果用戶名和密碼,必須與我的MySQL服務器的信息。

這樣做的最佳方法是什麼?

非常感謝你

+0

你是說你在MySQL中存儲登錄憑據??! – Ether 2009-11-26 19:43:39

+0

是的,我有一張帶有用戶信息的表格,另一張帶有密碼。 你是否檢查用戶輸入,然後你選擇表格來查看匹配或......你怎麼做? 謝謝 – Davidslv 2009-11-27 10:16:51

回答

2

創建驗證對MySQL的用戶名/密碼組合與DBI,如果它在%ARGS哈希通過用戶名和密碼返回true或false梅森組成部分。然後,使用返回值將組件加載到登錄表單的頂部,以確定是顯示登錄表單還是重定向到您的內容。

1

總是存儲密碼的哈希值。當您必須驗證用戶憑據時,請對用戶輸入的密碼進行散列處理,並將其與對應於特定用戶的散列密碼值進行比較。

+0

我有意,我正在尋找更多的編程答覆或一些解釋如何做。 – Davidslv 2009-11-27 12:30:02

4

我知道這個問題是有點老了,但現在我想我回答了後人。

我想你有幾個選擇。

一種選擇是不使用HTML ::梅森爲密碼驗證都沒有。這是我們以前做的事情。由於您的HTML :: Mason頁面可能運行在Web服務器內,因此您可以使用它來執行用戶名和密碼驗證。例如,如果您使用Apache和mod_perl來爲您的站點提供服務,那麼有幾個模塊用於身份驗證,包括可以與MySQL交談並使用用戶名和密碼列驗證用戶表的模塊。檢查Apache 2.2的文檔mod_authn_dbd。我推薦這種方法。

另一種方法是使用一個框架像Catalyst。 Catalyst已經擁有用於進行所需身份驗證的插件,並且如果您在Mason中嘗試並完成100%操作,它將使您不必考慮大部分需要自行編碼的問題。你仍然可以爲你的頁面模板使用HTML :: Mason。

如果你有你的心臟上使用HTML ::梅森做認證,然後我會做這樣設置:

  • 放置在文件夾中的autohandler要保護 - 記所有子文件夾都將收到相同的身份驗證保護

  • 在自動處理程序中的一個<%init>塊中,檢查cookie中的有效會話標記。如果不存在,請將($ m-> redirect)重定向到登錄表單。否則,什麼都不做 - 該處理程序將繼續運行並且該頁面將被提供。

  • 在登錄表單處理程序,提取在<%ARGS>塊中的用戶名和密碼。使用用戶名,從數據庫中檢索散列密碼。提取salt,並將其前置到用戶提供的明文密碼並重新對其進行哈希處理。然後比較哈希字符串。如果它們不匹配,則重定向回錯誤登錄頁面。否則通過。

如果以上的部分沒有意義環顧四周在本網站「鹽析密碼」等,由於原來的回答者指出,這是惡業存放明文口令在數據庫中。:-)

+0

我會說,如果其他人已經開始設置Catalyst(以及它的gazillion模塊依賴關係)的巨大頭痛,那麼同時使用Catalyst和HTML :: Mason會很好。 – 2009-12-20 22:58:06

+0

感謝Hissohathair! 這是我正在尋找的答覆。要研究你說的話! 再次感謝。 所有快樂聖誕! – Davidslv 2009-12-23 12:32:26

相關問題