728x90
반응형
express-mysql-session을 활용해 로그인 처리
오늘은 로그인처리와 동시에 session을 사용해 로그인 정보를 저장해 활용할 수 있도록 express-mysql-session을 활용해 로그인처리를 하였다.
1. express-session 설정
아래 명령어를 터미널에 입력해 express-session 모듈을 사용할 준비를 해준다.
# npm install express-session --save
하지만 express-session만을 가지고 여러 사용자에게 세션이라는 기능을 모두 제공할 수는 없다고 한다. 그 이유는 저장소를 사용하지 않기 때문이라고 하여 mysql을 저장소로 사용하는 express-mysql-session
을 사용하기로 했다.
2. express-mysql-session 설정
# npm install express-mysql-session --save
express-mysql-session이 package.json 파일에 dependencies에 추가된 것을 확인한다.
3. express-session 설정
app.js - session 설정
/* session 설정 - app.js */
var session = require('express-session');
var mySqlStore = require('express-mysql-session')(session);
var options = {
host: 'localhost',
port: 3306,
user: '[DB아이디]',
password: '[DB비밀번호]',
database: 'mysql'
};
var sessionStore = new mySqlStore(options);
app.use(session({
secret: "keyboard cat", // 세션을 암호화해줌
resave: false, // 세션을 항상 저장할지 여부
saveUninitialized: true, // 초기화되지 않은채 스토어에 저장되는 세션
store: sessionStore // 데이터 저장 형식
}));
form데이터로 넘어온 id, pwd로 고객정보 조회 mapper
<select id="selectLoginInfByCsId">
SELECT
CS_NO AS csNo
, CS_DV_CD AS csDvCd
, JON_DT AS jonDt
, CS_ID AS csId
, CS_NM AS csNm
, CPNO AS cpno
, EMAL AS emal
, BTDT AS btdt
, SEX_CD AS sexCd
, SMS_YS_YN AS smsYsYn
, EMAL_YS_YN AS emalYsYn
FROM TM_CS
WHERE CS_ID = #{csId}
AND CS_PWD_ENCR = #{csPwd}
</select>
로그인처리
/* 로그인처리 */
router.post('/login_process', function(req, res){
var post = req.body;
console.log(post);
var loginParam = {
csId : post.id,
csPwd : post.pwd
};
var format = {language: 'sql', indent: ' '};
var query = mybatisMapper.getStatement('csInf', 'selectLoginInfByCsId', loginParam, format);
maria.query(query, function(err, result, fields) {
if(err) throw err
if(result[0] !== undefined) {
/* session 정보 저장 */
req.session.uid = result[0].id;
req.session.author_id = result[0].author_id;
req.session.isLogined = true;
req.session.save(function() {
res.redirect('/');
})
} else {
// 로그인 실패
res.send('입력하신 정보와 일치하는 회원정보가 존재하지 않습니다.');
}
});
});
위와 같이 로그인처리 할 때 고객이 입력한 정보와 일치하는 고객정보가 있으면 session에 정보를 저장한다.
이제 서버에서 세션에 접근할 때 req.session
을 이용하여 접근하도록 하면 된다.
728x90
반응형
'개발 기록 > 개인프로젝트 기록' 카테고리의 다른 글
[개인프로젝트] [6] 회원가입 - id 중복체크 (ajax) (1) | 2022.10.17 |
---|---|
[개인프로젝트] [5] 환경변수 처리 dotenv (.env) (0) | 2022.10.11 |
[개인프로젝트] [3] Express에 mybatis-mapper 적용 (0) | 2022.10.06 |
[개인프로젝트] [2] Node Express - MariaDB 연동 / 테이블 설계 (0) | 2022.10.06 |
[개인프로젝트] [1] Node Express 개발환경구성 (Node.js, Express, EJS, BootStrap, Express-generator) (0) | 2022.10.04 |