連續四週的 Hacktoberfest 後,我終於完成了挑戰,並獲得了四個已批准的 PR。我必須承認,在這次活動開始時我感到非常緊張,因為開源感覺像是超越了我的舒適圈。然而,從較小的問題開始幫助我建立了信心,很快,我就有動力去尋找更複雜的問題來解決。我認為這種動力的一部分來自於學生時代——為開發者社群做出貢獻讓我感受到了現實世界的體驗。
如果您想了解更多有關我的 Hacktoberfest 旅程的信息,請隨時查看我的個人頁面,其中我記錄了每次 PR 後的反思。但事不宜遲,讓我們深入探討我最後一週的公關。
Mikochi 是一款輕量、自架的遠端檔案瀏覽器,非常適合使用者管理私人伺服器或 NAS(網頁附加儲存)上的檔案。該工具允許用戶輕鬆瀏覽遠端目錄,執行文件管理任務,例如上傳、下載、重新命名和刪除文件,甚至將媒體文件直接串流到 VLC 或 MPV 等播放器。
Mikochi 採用由 JavaScript/Preact 提供支援的現代 Web 介面以及 Go/Gin 中的 API 後端構建,為遠端文件瀏覽提供無縫且響應迅速的體驗。
在這個專案中,我解決了與增強 Mikochi 中的使用者控制和安全性相關的問題,我實現了可透過應用程式導覽列中的「登出」按鈕存取的登出功能。此功能旨在透過清除身份驗證令牌並將使用者重新導向到登入頁面來安全地登出使用者。在前端,登出按鈕會觸發對新 /logout 端點的 API 調用,從本地儲存中清除 JWT,並刷新或重定向頁面以確保用戶完全登出。在後端,我透過將令牌 ID 新增到無效令牌清單來建立處理 /logout 端點的邏輯。在 JWT 驗證中間件中檢查此列表,確保任何帶有無效令牌的請求都會被拒絕並傳回 403 回應。此功能提高了 Mikochi 的安全性,幫助使用者控制活動會話並保護他們在共用或公共裝置上的帳戶。
在此 PR 中,我為 Mikochi 實現了安全註銷功能,解決了前端和後端要求,以增強用戶會話控制。在前端,我創建了一個 Logout 元件來處理對 /api/logout 的 API 呼叫並從本地儲存中清除 JWT。當使用者按一下「登出」時,JWT 將被刪除,POST 請求將發送到後端以驗證註銷,並且頁面使用 window.location.href 將使用者重定向到主登入畫面。在後端,我修改了generateAuthToken()中的JWT產生以包含ID屬性,從而允許令牌有效地失效。然後,我在 backend/auth/handlers.go 中新增了一個處理程序,透過將 JWT ID 附加到無效令牌清單來管理註銷請求。 JWT 中介軟體檢查每個請求,如果令牌已失效則拒絕存取並傳回 403 回應。為了驗證功能,我透過在登出後將先前無效的令牌重新插入本機儲存來進行手動測試,確保任何重複使用它的嘗試都會失敗,從而有效地保護登出過程。
對我來說,這是一個令人著迷的項目,將後端和前端開發融合到一個項目中。我在前端解決的問題相對簡單——創建一個註銷按鈕,並使用一些 CSS 來改善其外觀。我已經學習 React 一段時間了,所以雖然我需要簡單回顧一下,但它幫助我了解原始碼中已有的程式碼和元件。
在後端,專案擁有者使用 Docker 將專案容器化,這對我來說是熟悉的基礎。然而,最耗時的部分是使用該專案的後端語言 Go。我之前沒有使用 Go 的經驗,但是解決這個問題讓我有機會將其學習到功能級別,我發現這非常有價值。
以上是開源,敞開大門:Hacktoberfest 4 總結的詳細內容。更多資訊請關注PHP中文網其他相關文章!