簡體   English   中英

NodeJS驗證后如何使用AngularJS訪問用戶信息?

[英]How can I access User Info with AngularJS after NodeJS verification?

我已經看到了一些與此相關的問題,但是對於Angular和Node來說都是新手,所以我一直在努力尋找合適的解決方案。

我有以下代碼,該代碼可用於登錄,並且只有通過身份驗證后才能訪問我的頁面:

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');
}

我進行的本地護照認證在驗證用戶是否存在並允許登錄后返回一個對象,例如:

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

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

我在前端使用的是一個簡單的ng-submit,其形式為調用“ login(credentials)”,其憑據由ng-model在其相應字段(用戶名和密碼)中設置。

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

刷新后需要保留信息,因此$ scope不是我所閱讀的選項。

您可能想在這里做的是創建一個用於獲取此信息的自定義路由。 例如:“ / me”。

通過這種途徑,您可以提供現在可能存儲在會話變量中的信息。

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

我希望您正在使用passport.js本地身份驗證。我建議將身份驗證后的用戶信息存儲在cookie中作為json網絡令牌或使用其他某種加密方式,並應公開一個api(/ api / is-authenticated)通過發送存儲在cookie中的令牌來檢查用戶是否已通過身份驗證。每當您刷新或導航到其他路由時,請進行api(/ api / is-authenticated)調用以檢查該特定用戶是否已通過身份驗證。

好,我知道了。

我已經有了服務,但所有問題都出在護照的成功重定向上。 成功時返回所需的html,這很好。 但是,由於我需要用戶信息,所以這還不夠。 我所做的是創建一個/ account路由,該路由返回req.user信息,然后我在前端進行處理並與之形成cookie。 基本上發生的是:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM