簡體   English   中英

用Perl的HTML :: Mason進行登錄會話的最佳方法是什么?

[英]What is the best way to make login session with Perl's HTML::Mason?

我在做到這一點上有些困難。

我有一個登錄HTML表單,我想知道用戶名和密碼是否與我的MySQL服務器中的信息匹配。

最好的方法是什么?

非常感謝你

我知道這個問題現在有點老了,但我想我會為后代回答。

我認為您有一些選擇。

一種選擇是根本不使用HTML :: Mason進行密碼驗證。 這就是我們過去所做的。 由於HTML :: Mason頁面可能在Web服務器中運行,因此您可以使用它來進行用戶名和密碼驗證。 例如,如果您使用Apache和mod_perl為站點提供服務,則有幾個用於身份驗證的模塊,其中一個模塊可以與MySQL對話並針對具有用戶名和密碼列的用戶表進行驗證。 查看Apache 2.2的mod_authn_dbd文檔。 我推薦這種方法。

另一種方法是使用Catalyst之類的框架。 Catalyst已經具有用於執行所需身份驗證的插件,如果您嘗試在Mason中進行100%的嘗試,則可以省去考慮為自己編寫代碼所需的大部分問題。 您仍然可以將HTML :: Mason用於頁面模板。

如果您全心全意地使用HTML :: Mason進行身份驗證,那么我可以這樣做:

  • 將自動處理程序放在您要保護的文件夾中-請注意,所有子文件夾都將獲得相同的身份驗證保護

  • 在自動處理程序的<%init>塊中,檢查cookie中的有效會話令牌。 如果不存在,請重定向($ m-> redirect)到您的登錄表單。 否則,什么也不做-自動處理程序將繼續運行,並且將為頁面提供服務。

  • 在您的登錄表單處理程序中,在<%args>塊中提取用戶名和密碼。 使用用戶名,從數據庫中檢索哈希密碼。 提取鹽,將其添加到用戶提供的純文本密碼中,然后重新哈希。 然后比較哈希字符串。 如果它們不匹配,請返回到錯誤的登錄頁面。 否則通過。

如果以上內容對本網站的“咸密碼”等內容毫無意義,則如原始回復所述,將純文本密碼存儲在數據庫中是很不好的行為。 :-)

創建一個梅森組件,該組件針對具有DBI的MySQL驗證您的用戶名/密碼組合,如果在%ARGS哈希中傳遞了用戶名和密碼,則返回true或false。 然后將組件加載到登錄表單的頂部,使用返回值確定是顯示登錄表單還是重定向到您的內容。

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

暫無
暫無

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

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