したがって、データベースとのインタフェース後にユーザーをログインするNode.js Webアプリケーションを作成しています。私はエクスプレスjsを使用しており、アプリケーションとデータベースの部分に退屈です。データベースとのインターフェースが完璧で、セッション変数を設定することができますが、ユーザーをリダイレクトできません。私のWebアプリケーションは、ログインした後にリロードする予定の1ページのアプリケーションですが、これは起こっていません。私はテンプレートエンジンとしてejsを使用しています。ログインボタンをクリックすると何も起こらず、アドレスバーにhttp://localhost:1337/と表示されますか? http://localhost:1337/の代わりに。どんな助けでも大歓迎です!ありがとうございました!Node.jsのログイン後にブラウザをリダイレクトすることができません
app.js - のみサブパート
....
var express = require('express');
var cookieParser = require('cookie-parser');
var routes = require('./routes/index');
var login = require('./routes/login.js');
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
app.use('/', routes);
app.use('/login', login);
....
login.js - 完全なファイル
var express = require('express');
var router = express.Router();
/* Make a user login */
router.post('/', function (req, res) {
var Connection = require('tedious').Connection;
var config = {
/* configuration options */
};
var connection = new Connection(config);
connection.on('connect', function (err) {
// If no error, then good to proceed.
if (err) {
console.log(err);
}
executeStatement();
});
var Request = require('tedious').Request;
var TYPES = require('tedious').TYPES;
function executeStatement() {
sql = "SELECT * from Table WHERE Email = '" + req.body.email + "' and password= '" + req.body.password + "';";
console.log(sql);
request = new Request(sql, function (err , rowCount) {
if (err) {
console.log(err);
}
});
request.on('row', function (columns) {
columns.forEach(function (column) {
console.log(column.metadata.colName + ":" + column.value)
if (column.metadata.colName == "Email") {
req.session.email = column.value;
console.log(req.session.email);
}
else if (column.metadata.colName == "Name") {
req.session.name = column.value;
console.log(req.session.name);
}
else if (column.metadata.colName == "phoneNumber") {
req.session.phonenumber = column.value;
console.log(req.session.phonenumber);
}
else if (column.metadata.colName == "Address1") {
req.session.address1 = column.value;
console.log(req.session.address1);
}
else if (column.metadata.colName == "Address2") {
req.session.address2 = column.value;
console.log(req.session.address2);
}
else {
//Do Nothing - Just placeholder
}
});
});
request.on('doneProc' , function (rowCount, more, returnStatus, rows) {
if (rowCount == 1) {
res.redirect('/');//This doesnt redirect!
}
else {
res.send("Loging Unsuccesful!");
}
});
connection.execSql(request);
}
});
module.exports = router;
index.ejs - 完全なファイル私が見つけた
<html>
<head>
<title>Test</title>
</head>
<body>
<% if(loggedin == 'true') {%>
You are logged in! <br>
Your details are:
<%= email %><br>
<%= name %><br>
<%= phonenumber %><br>
<%= address1 %><br>
<%= address2 %><br>
<button onclick="logout()">Logout </button>
<% } else { %>
<form>
<label>Email</label>
<input type="text" id="email">
<label>Password</label>
<input type="password" id="password">
<button type="submit" onclick="login()">Login</button>
</form>
<% } %>
<form>
<label>Name</label>
<input type="text" id="sname">
<label>Email</label>
<input type="text" id="semail">
<label>Password</label>
<input type="password" id="spassword">
<label>Phone Number</label>
<input type="text" id="sphonenumber">
<label>Address 1</label>
<input type="text" id="saddress1">
<label>Address 2</label>
<input type="text" id="saddress2">
<button type="submit" onclick="signup()">Signup</button>
</form>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
<script src="javascripts/indx.js"></script>
</body>
ことだからと言っていますリダイレクトはサーバー側とクライアント側の両方から行う必要がありますか?私のnode.jsファイルと対話するためにajaxを使用しているとすれば、urlは 'myappname/mypath'でなければならず、node.jsコードにリダイレクトする必要がありますか?すべての助けをありがとう!私はnode.jsで新しく、これはすべて馬鹿に見えるかもしれません。 –