【发布时间】:2019-07-06 21:06:47
【问题描述】:
使用angular-cli开发angular,
ng serve 在端口 4200
node server.js 在 3000 端口上
我想使用快速登录页面登录。
因为 cookie 和会话是特定于域的。由于端口不同,我可以在 express 页面上通过端口 3000 登录自己,因为所有登录都是在 express 端完成的。
如何使用 Angular 应用程序?
Expressjs 将无法在应用中通过 XHR 接收会话和 cookie。
所以访问相同的localhost:3000/api/user路线
在 Angular 内,它的 XHR 命中呈现 302 重定向,就像未登录用户一样 但是直接访问它是200。
app.use(session({
secret: 'somerandonstuffs',
resave: true,
saveUninitialized: false,
cookie: { maxAge: 60 * 1000, httpOnly: true }
}));
const authUser = (req, res, next) => {
if (req.session.user && req.cookies['connect.sid']) {
next();
} else {
res.redirect(config.serverHost + '/login');
}
};
app.route('/login')
.get((req, res) => {
res.sendFile(__dirname + '/views/login.html');
})
.post((req, res) => {
req.session.user = {
id: 'x@x.x'
};
res.redirect(config.clientHost);
}
});
app.all('/*', authUser, function (req, res, next) {
next();
});
实际上,至少有人可以告诉我共享域(端口)是否可以使用这种方法?
【问题讨论】:
标签: node.js angular express session express-session