I have get a login page code on the web based on express nodeJS.
I have many backend app running on different port. The goal is, when a user is authentificated in the nodeJS server, he's automaticaly redirected to his app.
But, if i can mount a http-proxy separated and run it properly, i would want to include proxying in this loggin JS code when user is connected.
There is the part of the code below.
const httpProxy = require('http-proxy');
const proxy = httpProxy.createProxyServer();
(...)
// http://localhost:3000/auth
app.post('/auth', function(request, response) {
// Capture the input fields
let username = request.body.username;
let password = request.body.password;
// Ensure the input fields exists and are not empty
if (username && password) {
// Execute SQL query that'll select the account from the database based on the specified username and password
connection.query('SELECT * FROM accounts WHERE username = ? AND password = ?', [username, password], function(error, results, fields) {
// If there is an issue with the query, output the error
if (error) throw error;
// If the account exists
if (results.length > 0) {
// Authenticate the user
request.session.loggedin = true;
request.session.username = username;
// Redirect to home page
proxy.web(req, res, { target: 'http://127.0.0.1:1881' });
//response.redirect('/home');
} else {
response.send('Incorrect Username and/or Password!');
}
response.end();
});
} else {
response.send('Please enter Username and Password!');
response.end();
}
});
app.listen(3000);
At the response.redirect('/home');
i want to replace it by proxying, but nothing append.
I don't know if this is possible, because running 2 servers on the same instance.
Thank you for your help.
Regard
CodePudding user response:
I think it is better to use this package if you use express: https://www.npmjs.com/package/express-http-proxy
You can use it like this:
const { createProxyMiddleware, fixRequestBody, responseInterceptor } = require( 'http-proxy-middleware' );
const proxyMiddleware = createProxyMiddleware({
target: 'foo',
onProxyReq: fixRequestBody,
logLevel: 'debug',
changeOrigin: true,
secure: false,
xfwd: true,
ws: true,
hostRewrite: true,
cookieDomainRewrite: true,
headers: {
"Connection": "keep-alive",
"Content-Type": "text/xml;charset=UTF-8",
"Accept": "*/*"
},
});
app.use( '/youRoute/**', proxyMiddleware );
And then when you are loged in you redirect to you you proxified route :
res.redirect('/youRoute/');