使用angular-cli开发角度,
ng serve
在端口4200上
node server.js
位于端口3000
我要使用快速登录页面登录。
因为cookie和会话是特定于域的。由于端口不同,我可以通过快速页面上的端口3000登录自己,因为所有登录都在快速侧完成。
如何使用角度应用程序?
Expressjs将无法通过应用程序中的XHR接收会话和cookie。
因此要访问相同的localhost:3000/api/user
路线
在角度范围内,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();
});
实际上,至少有人可以告诉我共享域(端口)是否完全可以使用这种方法工作?
答案 0 :(得分:0)
您在4200(仅)上运行Angular CLI服务器进行开发。如果您想访问端口3000 API,请使用代理配置:
在angular.json中:
"serve": {
"builder": "@angular-devkit/build-angular:dev-server",
"options": {
"browserTarget": "cleanup:build",
"proxyConfig": "proxy.conf.json"
},
并在proxy.conf.json中定义重定向:
{
"/api/*": {
"target": "http://localhost:3000",
"secure": false,
"logLevel": "debug",
"changeOrigin": true
}
}
现在,在常规模式下,您将使用同一台Express服务器来服务Angular。
"architect": {
"build": {
"builder": "@angular-devkit/build-angular:browser",
"options": {
"outputPath": "../express/webapp"
或者您的静态静态目录在哪里。