2016-03-09 77 views
0

我已經看到了一些關於這個問題的問題,但是對於Angular和Node都是新手,我正在努力尋找合適的解決方案。如何在NodeJS驗證後使用AngularJS訪問用戶信息?

我有這個代碼,它工作了登錄,我只能通過認證後,可以訪問我的網頁:

router.post('/login', 
    passport.authenticate('local', 
      { 
       successRedirect: '/', 
       failureRedirect: '/login', 
       failureFlash: false, 
       successFlash: false 
      } 
    )); 

router.all('*', ensureAuthenticated); 

function ensureAuthenticated(req, res, next) { 
    console.log("in ensureAuth", req.isAuthenticated()); 
    console.log("session data", req.session); 
    console.log("user data", req.user); 
    if (req.isAuthenticated()) 
    { 
     return next(); 
    } 
    res.redirect('/login'); 
} 

當地Passport身份驗證我有回報覈實後的對象,如果用戶存在,並且允許登錄,因此:

return passportDone(null, result.rows[0]); 

with result.rows [0]是我想要的用戶信息。

我在前端有一個簡單的ng-submit表單,它在各自的字段(用戶名和密碼)中調用「login(憑證)」,憑證由ng-model設置。

我的問題是如何返回我想要的所有信息,例如user_role,名稱和內容,因此我可以在前端以{{user.name}}的形式顯示它?

信息需要保持刷新後,所以$範圍不是我讀過的選項。

+0

創建服務管理的登錄請求,並在該服務中存儲響應所以它是在整個應用程序的角度提供。這裏有很多教程 – charlietfl

+0

我的問題是身份驗證已經用護照完成。我不太瞭解請求的工作原理。我發現了一個非常好的角度部分示例,但是在登錄時,它期望req對象的內容不是節點應用程序返回的內容。節點應用程序在req.data中返回索引頁的html代碼... – Forget

回答

1

你可能想要在這裏做什麼,是創建一個自定義路徑來獲取此信息。例如:「/我」。

在此路線中,您可以提供您現在可能存儲在會話變量中的信息。

另一個解決方案,取決於你的應用程序如何使用身份驗證,是注入userinfo(例如,如果您登錄並重定向到一個新頁面,則可以將userinfo注入到新頁面中作爲js變量),或者如果您發送ajax請求登錄並且不會被服務器重定向到新頁面,則可以在響應中返回userinfo。

0

我希望你正在使用passport.js本地身份驗證。我建議在cookie中認證後存儲用戶信息作爲json webtoken或使用其他加密方式。並且應該公開api(/ api/is-authenticated),它是用於通過發送存儲在cookies中的令牌來檢查用戶是否已通過身份驗證。當您刷新或導航到其他路由時,請進行api(/ api/is-authenticated)調用以檢查該特定用戶是否已經過身份驗證。

+0

是的,我正在使用護照。我相信我有這樣的/ api/is-authenticated爲: router.all('*',ensureAuthenticated); 從我所瞭解的情況來看,它重定向所有以確保在帖子本身上進行了認證。 – Forget

+0

好吧,我嘗試了一下,發生了什麼事情,服務器給出的響應是index.html,因爲有'/'作爲successRedirect。它不會迴應一些有用的東西,而是回饋索引頁面...知道如何改變它? – Forget

0

好的,我明白了。

我已經有了這項服務,但所有問題都與護照的successfulRedirect有關。它成功返回你想要的html,這很好。但是,由於我想要用戶信息,這還不夠。我所做的是創建一個/ account路線,該路線返回req.user信息,然後我在前端處理並用它形成一個cookie。什麼基本情況是:

post_login-> verify_user->成功 - > get_account-> form_cookie-> render_html

相關問題