访问Express Session数据或将其传递到Angular 6

时间:2018-09-07 13:46:32

标签: node.js angular express session nginx

在我们的设置中,我们使用Nginx,Node 8.11和Angular CLI 6,我试图将Express中设置的值返回到Angular 6前端。

我想我可能有一个独特的设置,我需要一些如何进行的帮助。在我们的设置中,我们有一个公司要求的登录页面,所有应用程序均会路由到该页面。用户成功登录该页面后,它将重定向回调用站点,然后继续进行正常处理。

流程是这样的

第一: 用户输入内部网址-https://myawesome.company.com/myapp,我们使用nginx和node。然后在我们的节点server.js中,以如下方式在express中建立会话:

// setup our session managment
var session = require('express-session');
app.use(session({
   name: config.ses_cookie_name,
   resave: true,
   saveUninitialized: true,
   secret: config.session_secret
}));

步骤2: 然后,我们的节点server.js调用路由/进程-例如 app.use(auth.verifyuser()); ,该调用将调用公司登录页面,并依次验证用户(或不验证用户)并发回用户信息。

第3步。 节点应用从公司登录页面获取有效的用户信息后,它将继续并将用户路由到主要的角度应用。

app.get('*', (req, res) => {
     res.sendFile(path.resolve('dist/index.html'));
    }
});

我的主要问题是-在启动应用程序的有角度部分之前,我已经掌握了用户的信誉(用户名,级别等)。但是,我无法弄清楚如何将此信息传递给Angular应用程序,或者,如果angular已经可以访问这些变量。任何意见,将不胜感激。

我也不是专家,并且一直在学习。

谢谢!

1 个答案:

答案 0 :(得分:0)

否,您不能使用res.sendFile(...)方法和那里的html发送任何数据,而是可以使用res.render方法,

res.render('index', { loggedInUser: loggedInUserObj }, function(err, html) {
  // ...
});

注意:在上面的示例中,假设loggedInUserObj保留了您登录的用户数据。

要使用此功能,您需要像这样设置view engine

app.set('view engine', 'ejs');  

然后您可以像这样定义您的index页面(使用res.render进行渲染),这里我转储loggedInUserObj对象以确保我们的数据得到传递

 <%- JSON.stringify(loggedInUserObj) %>

希望这会有所帮助!