从后端加载角度应用程序

时间:2015-11-20 22:38:32

标签: javascript angularjs node.js express

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

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

我怎样才能最好地完成这项工作?

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

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

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

4 个答案:

答案 0 :(得分:0)

如果你正在使用像玉一样的渲染引擎。在您加载的玉石模板中,您可以嵌入角度并在所述玉石模板上嵌入ng视图。

所以你使用jade模板让服务器处理auth tk呈现你的开放/公共页面,然后进行身份验证。一旦他们通过您的Auth测试,将页面重定向到具有角度的玉石模板。然后,当页面加载角度调用后,jade将呈现页面,并且您的角度应用程序将接管页面。

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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