連續四週的 Hacktoberfest 後,我終於完成了挑戰,並獲得了四個已批准的 PR。我必須承認,在這次活動開始時我感到非常緊張,因為開源感覺像是超越了我的舒適圈。然而,從較小的問題開始幫助我建立了信心,很快,我就有動力去尋找更複雜的問題來解決。我認為這種動力的一部分來自於學生時代——為開發者社群做出貢獻讓我感受到了現實世界的體驗。
如果您想了解更多有關我的 Hacktoberfest 旅程的信息,請隨時查看我的個人頁面,其中我記錄了每次 PR 後的反思。但事不宜遲,讓我們深入探討我最後一週的公關。
Mikochi 概述:極簡遠端文件瀏覽器
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中文網其他相關文章!

理解JavaScript引擎內部工作原理對開發者重要,因為它能幫助編寫更高效的代碼並理解性能瓶頸和優化策略。 1)引擎的工作流程包括解析、編譯和執行三個階段;2)執行過程中,引擎會進行動態優化,如內聯緩存和隱藏類;3)最佳實踐包括避免全局變量、優化循環、使用const和let,以及避免過度使用閉包。

Python更適合初學者,學習曲線平緩,語法簡潔;JavaScript適合前端開發,學習曲線較陡,語法靈活。 1.Python語法直觀,適用於數據科學和後端開發。 2.JavaScript靈活,廣泛用於前端和服務器端編程。

Python和JavaScript在社區、庫和資源方面的對比各有優劣。 1)Python社區友好,適合初學者,但前端開發資源不如JavaScript豐富。 2)Python在數據科學和機器學習庫方面強大,JavaScript則在前端開發庫和框架上更勝一籌。 3)兩者的學習資源都豐富,但Python適合從官方文檔開始,JavaScript則以MDNWebDocs為佳。選擇應基於項目需求和個人興趣。

從C/C 轉向JavaScript需要適應動態類型、垃圾回收和異步編程等特點。 1)C/C 是靜態類型語言,需手動管理內存,而JavaScript是動態類型,垃圾回收自動處理。 2)C/C 需編譯成機器碼,JavaScript則為解釋型語言。 3)JavaScript引入閉包、原型鍊和Promise等概念,增強了靈活性和異步編程能力。

不同JavaScript引擎在解析和執行JavaScript代碼時,效果會有所不同,因為每個引擎的實現原理和優化策略各有差異。 1.詞法分析:將源碼轉換為詞法單元。 2.語法分析:生成抽象語法樹。 3.優化和編譯:通過JIT編譯器生成機器碼。 4.執行:運行機器碼。 V8引擎通過即時編譯和隱藏類優化,SpiderMonkey使用類型推斷系統,導致在相同代碼上的性能表現不同。

JavaScript在現實世界中的應用包括服務器端編程、移動應用開發和物聯網控制:1.通過Node.js實現服務器端編程,適用於高並發請求處理。 2.通過ReactNative進行移動應用開發,支持跨平台部署。 3.通過Johnny-Five庫用於物聯網設備控制,適用於硬件交互。

我使用您的日常技術工具構建了功能性的多租戶SaaS應用程序(一個Edtech應用程序),您可以做同樣的事情。 首先,什麼是多租戶SaaS應用程序? 多租戶SaaS應用程序可讓您從唱歌中為多個客戶提供服務

本文展示了與許可證確保的後端的前端集成,並使用Next.js構建功能性Edtech SaaS應用程序。 前端獲取用戶權限以控制UI的可見性並確保API要求遵守角色庫


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

SublimeText3 Linux新版
SublimeText3 Linux最新版

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。