2014-11-20 31 views
1

目前,我正在使用JWT(json Web令牌)來驗證某人是否已登錄的Angularjs網站上工作。現在我想使用passport/oauth添加一些「一鍵式」登錄方法,但在如何將登錄詳細信息傳回到angularjs方面很困難。在JWT中使用護照oauth在angularjs中使用

當我與電子郵件/密碼登錄,我生成令牌,並將其傳遞迴角:

var token = jwt.sign({ _id: user._id.toString() }, JWT_SECRET); 
return res.json({ 
    userID: user._id.toString(), 
    username: user.username, 
    isAdmin: user.isAdmin, 
    token: token 
}); 

和令牌用於驗證登錄。當通過oauth時,你必須離開網站,然後回來,所以我不能以同樣的方式從ajax返回一些標記。

我認爲它可能會將其添加到我的驗證呼叫(當有人刷新網站,我運行檢查,看看他們是否已經登錄)。這將檢查令牌並返回適當的用戶數據。有沒有辦法檢查護照是否已經在這裏登錄?我的驗證碼看起來像這樣(JWT自動將令牌信息設置爲req.user):

Schemas.User.findOne({ _id: req.user._id }, function (err, user) { 
    if (err || !user) { return res.send(401); } 
    return res.json({ 
    userID: user._id.toString(), 
    username: user.username, 
    isAdmin: user.isAdmin 
    }); 
}); 

回答

0

所以我有幾個問題。我沒有正確使用護照(我忘記添加序列化/反序列化)。然後在我的auth回調中,我設置了一個包含JWT的cookie(我也沒有意識到護照也會自動設置req.user),並以角度檢查cookie。如果Cookie存在,我將其設置爲本地存儲,並刪除Cookie。奇蹟般有效!