0
mysql 데이터베이스를 사용하여 express.js에서 로그인 및 등록 기능을 구현하고 있습니다. 내 가입 논리가 잘 작동하고 있습니다. 하지만 로그인이 작동하지 않습니다. 대신, Expressjs - 세션 변수에 정의되지 않은 'userId'속성을 설정할 수 없습니다.
TypeError: Cannot set property 'userId' of undefined and throw err; // Rethrow non-MySQL errors my routes/user.login code is as follows.
exports.login = function(req, res){
var message = '';
var sess = req.session;
if(req.method == "POST"){
var post = req.body;
var name= post.user_name;
var pass= post.password;
var sql="SELECT id, first_name, last_name, user_name FROM `users` WHERE `user_name`='"+name+"' and password = '"+pass+"'";
db.query(sql, function(err, results){
if(results.length){
req.session.userId = results[0].id;
req.session.user = results[0];
console.log(results[0].id);
res.redirect('/home/dashboard');
}
else{
message = 'Wrong Credentials.';
res.render('index.ejs',{message: message});
}
});
}else {
res.render('index.ejs',{message: message});
}
};
을 오류가 발생하고 다음과 같이 내 login.ejs 파일입니다.
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Sample Site</title>
<link rel="stylesheet"href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css"/>
</head>
<body id="clrblk">
<div class="container">
<div id="loginbox" style="margin-top:50px;" class="mainbox col-md-6 col-md-offset-3 col-sm-8 col-sm-offset-2">
<div class="panel panel-info" >
<div class="panel-heading">
<div class="panel-title">Sign In</div>
<!--<div style="float:right; font-size: 80%; position: relative; top:-10px"><a href="#">Forgot password?</a></div>-->
</div>
<div style="padding-top:30px" class="panel-body" >
<% if (message.length > 0) { %>
<div class="alert alert-danger col-sm-12"><%= message %></div>
<% } %>
<form id="loginform" class="form-horizontal" role="form" method="post" action="/login">
<div style="margin-bottom: 25px" class="input-group">
<span class="input-group-addon"><i class="glyphicon glyphicon-user"></i></span>
<input id="login-username" type="text" class="form-control" name="user_name" value="" placeholder="username">
</div>
<div style="margin-bottom: 25px" class="input-group">
<span class="input-group-addon"><i class="glyphicon glyphicon-lock"></i></span>
<input id="login-password" type="password" class="form-control" name="password" placeholder="password">
</div>
<div class="input-group">
<!--<div class="checkbox">
<label>
<input id="login-remember" type="checkbox" name="remember" value="1"> Remember me
</label>
</div>-->
</div>
<div style="margin-top:10px" class="form-group">
<!-- Button -->
<div class="col-sm-12 controls">
<button id="btn-login" type="submit" class="btn btn-success">Login </button>
</div>
</div>
<div class="form-group">
<div class="col-md-12 control">
<div style="border-top: 1px solid#888; padding-top:15px; font-size:85%" >
Don't have an account!
<a href="/signup">
Sign Up Here
</a>
</div>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</body>
</html>
감사합니다. 알아 냈습니다. Expression-session이 설치되지 않았습니다. app.js에서 설치 및 구성한 후, 제 앱이 정상적으로 작동했습니다. –