簡體   English   中英

從后端加載 Angular 應用程序

[英]Loading an Angular App from the Backend

我想在我的 angular 應用程序中加載任何其他內容之前檢查用戶是否從后端進行了身份驗證,以便沒有加載源代碼。 發送到后端的初始請求將是查看用戶是否通過身份驗證。 如果是這樣,應用程序將被加載。

或者,我想知道如何在請求頁面時讓我的后端檢查身份驗證,並根據用戶是否登錄發送不同的內容。

我怎樣才能最好地做到這一點?

app.use(function(req, res, next) {
  console.log(req);
 next();
});

app.all('*', function(req, res, next) {
  console.log(req);
  res.send('hey');
})

為什么這些在我的節點應用程序中不起作用?

如果您使用的是像 jade 這樣的渲染引擎。 在加載的玉石模板中,您可以嵌入角度並在所述玉石模板上嵌入 ng-view。

因此,您讓服務器使用 jade 模板 tk 來處理身份驗證,從而呈現您的開放/公共頁面,然后進行身份驗證。 一旦他們通過您的 Auth 測試,將頁面重定向到具有角度的 jade 模板。 然后 jade 將呈現頁面,一旦頁面加載 angular 被調用並且您的 angular 應用程序將接管該頁面。

如果您使用與服務器路由和角度模板 URI 重疊的 URI,請小心,因為它們會在 ajax 調用期間觸發這些路由上的任何中間件。

您可以在請求頁面時讓后端檢查身份驗證,並根據用戶是否登錄發送不同的內容。

另一種方法是解析路由配置中的服務,該服務在解析路由之前檢查身份驗證。 https://docs.angularjs.org/api/ngRoute/provider/ $routeProvider

我給出了一個關於使用令牌進行身份驗證的非常有用的教程; 一般來說,想法是使用攔截器檢查用戶是否已通過身份驗證,以防用戶未通過身份驗證重定向到默認或登錄頁面

您需要對您的用戶進行身份驗證並以某種方式檢查他的授權。 例如,如果您使用基於會話的身份驗證(非常類似於 PHP 進行會話的方式),您可能有一個/login站點來呈現用戶的登錄頁面。 使用自定義 expressjs 中間件,您可以重定向未經授權的用戶或回復401 Unauthorized / 403 Forbidden

app.use(require('cookie-parser')());
app.use(require('express-session')());
// ...

app.post('/login', function (req, res, next) {
  if (credentialsAreOK(req) {
    req.session.authorized = true;
    res.redirect('/pageAfterLogin');
  } else {
    res.send(401);
  }
};

var checkAuthorization = function (req, res, next) {
  if (req.session && req.session.authorized) {
    return next();
  } else {
    res.redirect('/login');
    // or return res.send(401);
  }
};

app.get('/protectedSite', checkAuthorization);
// or
app.get('/protectedSite', checkAuthorization, protectedSiteHandler);

暫無
暫無

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

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