Angular app使用快速会话来验证端口3000和端口4200
使用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: '[email protected]'
};
res.redirect(config.clientHost);
}
});
app.all('/*', authUser, function (req, res, next) {
next();
});
实际上,至少有人可以告诉我,如果共享域(端口)可以使用这种方法吗?
回答如下:您在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
}
}
现在处于常规模式,您使用相同的快速服务器来提供Angular。
"architect": {
"build": {
"builder": "@angular-devkit/build-angular:browser",
"options": {
"outputPath": "../express/webapp"
或者您的快速静态目录所在的位置。
Angular app使用快速会话来验证端口3000和端口4200
使用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: '[email protected]'
};
res.redirect(config.clientHost);
}
});
app.all('/*', authUser, function (req, res, next) {
next();
});
实际上,至少有人可以告诉我,如果共享域(端口)可以使用这种方法吗?
回答如下:您在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
}
}
现在处于常规模式,您使用相同的快速服务器来提供Angular。
"architect": {
"build": {
"builder": "@angular-devkit/build-angular:browser",
"options": {
"outputPath": "../express/webapp"
或者您的快速静态目录所在的位置。