从后端加载Angular应用程序

Loading an Angular App from the Backend

本文关键字:应用程序 Angular 加载 后端      更新时间:2023-09-26

我想在我的angular应用程序中加载任何其他内容之前,检查用户是否从后端进行了身份验证,这样就不会加载任何源代码。发送到后端的初始请求将是查看用户是否经过身份验证。如果是,应用程序将被加载。

或者,我想知道如何在请求页面时让我的后端检查身份验证,并根据用户是否登录发送不同的内容。

我怎样才能最好地做到这一点?

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

为什么这些在我的节点应用程序中不起作用?

如果您使用的是像jade这样的渲染引擎。在加载的玉模板中,您可以将angular和ng视图嵌入到所述玉模板上。

因此,您让服务器使用jade模板tk处理auth,呈现您的开放/公共页面,然后进行身份验证。一旦他们通过了你的Auth测试,就会将页面重定向到上面有angular的jade模板。一旦页面加载angular,jade就会渲染页面。调用angular,你的angular应用程序就会接管页面。

如果您使用在服务器路由和角度模板URI上重叠的URI,请小心,因为它们会在ajax调用期间触发这些路由上的任何中间件。

我提供了一个关于令牌身份验证的非常有用的教程;一般来说,这个想法是使用一个拦截器来检查用户是否通过了身份验证,以防用户没有通过身份验证重定向到默认或登录页面

您需要对用户进行身份验证并以某种方式检查其授权。例如,如果使用基于会话的身份验证(与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);

当请求页面时,您可以让后端检查身份验证,并根据用户是否登录发送不同的内容。

另一种方法是解析路由配置中的服务,该服务在解析路由之前检查身份验证。https://docs.angularjs.org/api/ngRoute/provider/$routeProvider