繁体   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