2017-02-17 71 views
0

我正在爲我的網站的用戶實施重置密碼功能。一旦經過驗證的,定義明確的用戶註冊,就會生成一個唯一的令牌(專門用於這種情況),保存在數據庫中,並作爲參數包含在「忘記密碼」電子郵件中包含的鏈接的查詢字符串中。用戶然後檢查他們的電子郵件,點擊鏈接,並將被重定向到他們可以重新定義他們的密碼的視圖。從重置密碼獲取參數鏈接(快速)

我在這個過程中遇到的主要障礙是當用戶點擊他們電子郵件中的鏈接時,從鏈接獲取唯一標記作爲參數。我引用的official Express documentation和指定的路線(這是在電子郵件激活,當用戶點擊它在他們的收件箱中去,以便重設密碼),並寫了下面的路線來處理它:

usersRouter.route('/reset/passwordLoggedOut/:token') 
    .get(emails.resetPasswordForgot); 

與隨後的resetPasswordForgot()函數(精縮爲您的觀察方便):

function resetPasswordForgot(req, res){ 
    const token = req.params.token; 
    console.log(token); 
    res.send(200); 
} 

CONSOLE.LOG(令牌)目前呈現出了空當我希望它包含用戶密碼令牌。

一些更多的背景信息,我使用SendGrid作爲我的所有自動電子郵件,Mailinator作爲用戶測試電子郵件,以下是當我將鼠標懸停在電子郵件中的鏈接上時的路線。 (我認識到,像小,可能無法查看沒有幾次縮放,但我想包括儘可能多的URL儘可能的)

enter image description here

請讓我知道我需要做的從電子郵件中的鏈接獲取令牌參數。

回答

0

需要由query訪問屬性:

function resetPasswordForgot(req, res){ 
    const token = req.query.token; 
    console.log(token); 
    res.send(200); 
} 
+0

req.query.token產量不確定和req.query是一個空的對象。經過進一步檢查後,我相信無論是否正確傳遞查詢字符串或b)SendGrid正在修改鏈接的方式阻止正確訪問參數。 –