리셋 되지 말자

[NodeJS] Passport 로그인 확인 본문

NodeJS/생활코딩

[NodeJS] Passport 로그인 확인

kyeongjun-dev 2020. 10. 5. 12:08

request의 user 객체

  • index.js
router.get('/', (req, res) => {
    console.log('main', req.user);
    db.query('SELECT * FROM topic', function (error, topics) {
        //console.log('/', req.user);
        if (error) throw error;
        var description = 'Hello, Node.js';
        var title = 'Welcome';
        var list = template.list(topics);

        var html = template.html(title, list, `<h2>${title}</h2>
        ${description}
        `, `<a href="/page/create">create</a>`,
        auth.statusUI(req, res));
        res.send(html);

    });
});

'/'로 접속할 때마다 req.user를 출력하도록 이전 게시물에서 선언하였다. 이 user라는 객체는 passport를 사용하게 되면 passport 모듈이 request에 주입해주는 객체이다.

이를 이용해 사용자가 로그인을 했는지 안했는지 알 수 있다.

 

auth.js 수정

세션에 is_logined가 값이 true이면 login ui를 변경하는 우리가 만든 모듈을 변경한다.

  • 변경 전
module.exports = {
    isOwner:function (req, res){
        if(req.session.is_logined == true){
            return true;
        } else {
            return false;
        }
    },
    statusUI:function (req, res){
        var authStatusUI = '<a href="/auth/login">login</a>';
            if(this.isOwner(req, res)){
                authStatusUI = `${req.session.nickname} | <a href="/auth/logout">logout</a>`;
            }
        return authStatusUI;
    }
}

 

  • 변경 후
module.exports = {
    isOwner:function (req, res){
        if(req.user){
            return true;
        } else {
            return false;
        }
    },
    statusUI:function (req, res){
        var authStatusUI = '<a href="/auth/login">login</a>';
            if(this.isOwner(req, res)){
                authStatusUI = `${req.session.nickname} | <a href="/auth/logout">logout</a>`;
            }
        return authStatusUI;
    }
}

request에 user객체가 있으면 로그인이 되어있다는걸 뜻하므로 위와같이 수정해준다.

 

코드 반영 후 결과

로그인을 성공하면 위처럼 login이 아닌 logout이 생긴것을 확인할 수 있다.

  • /lib/auth.js 수정
module.exports = {
    isOwner:function (req, res){
        if(req.user){
            return true;
        } else {
            return false;
        }
    },
    statusUI:function (req, res){
        var authStatusUI = '<a href="/auth/login">login</a>';
            if(this.isOwner(req, res)){
                authStatusUI = `${req.user.nickname} | <a href="/auth/logout">logout</a>`;
            }
        return authStatusUI;
    }
}

이름도 잘 출력되는 것을 확인할 수 있다.

'NodeJS > 생활코딩' 카테고리의 다른 글

[NodeJS] Connect-flash  (0) 2020.10.05
[NodeJS] Passport 로그아웃  (0) 2020.10.05
[NodeJS] Passport 세션이용  (0) 2020.09.28
[NodeJS] Passport 인증 구현 및 자격 확인  (0) 2020.09.28
[NodeJS] Passport 설치  (0) 2020.09.28
Comments