hCaptcha

前情提要 我們社團的短網址服務裡面常常出現一些奇怪的網址,我猜可能是有機器人在刷,所以我想加入 captcha 減少這類問題。我選擇的是 hCaptcha 這套,能不依賴 Google 就盡量不要。 安裝步驟 申請帳號 先到 hCaptcha 註冊、新增一個網站,複製 sitekey (Sites > site setting) 和 secret key (Settings),我們等等會用到 前端 首先引入 script ,在 <head> 加入 <script src="https://hcaptcha.com/1/api.js" async defer></script> 接著在你的 <form> 裡面加入,這邊的 your_site_key 就是剛剛複製的那個。記得 <form> 的 method 要設成 post <div class="h-captcha" data-sitekey="your_site_key"></div> 後端(node express) SECRET 首先,你要把剛剛的 SECRET 給 server 知道,我用的是 dotenv,當然其他的套件也是可以。 簡而言之,剛剛複製下來的 SECRET 就是用在這裡。 驗證 後端我選用的套件是 express-hcaptcha ,它提供一個 middleware 驗證 hcaptcha 的 token。 按照 README....

2021-January-5 · 1 分鐘 · simba-fs

express 重複 send

問題 在 express route 裡面,我通常會在 res.send() 之類的函式前面都會加一個 return 防止因為程式邏輯漏洞造成重複送出然後噴 error。像是這樣 route.get('/', (req, res, next) => { return res.send('Hello world'); }); 但是如果我們用到 Promise 的時候 return 並不會跳出整個 route,所以我們需要另一個方法,我的想法是一個變數儲存是否送出,然後在每次送出前都判斷,送出候更改變數值 +--------------------------+ | is sent( flag === false) | +-+------------------------+ |no | +-+----+ | send | +-+----+ | +-+-----------+ | change flag | +-------------+ route.get('/', (req, res, next) => { let flag = false; doSomePromise() .then(() => { // do something if(!...

2020-August-19 · 1 分鐘 · simba-fs

remind-daniel

今天終於把登入做完了 我覺得最重要的是找好的教學文章、去看沒有人看得懂的程式碼

2020-March-15 · 1 分鐘 · simba-fs