• 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    미해결

제로초님! 혹시 JWT 사용시 세션 사용하여 인증하는 serialize를 사용하지 못하나요?

21.05.25 13:22 작성 조회수 306

0

NodeBird 강의를 통해 Serialize로 로그인을 구현하고, JWT를 적용하려고 하는데 서버에서 JWT와 세션을 이용하는 Serialize를 동시에 사용하지 못하나요? 혹시 동시에 사용이 가능하다면 index.js를 어떤 식으로 설계해야하나요?

답변 3

·

답변을 작성해보세요.

0

admin님의 프로필

admin

질문자

2021.05.25

네 답변 감사드립니다:) 마지막으로 질문 있는데, jwt에서 발행한 토큰을 클라이언트 어느 곳에 저장을 해서 서버와 통신을 진행 할텐데, 그 토큰 값만 알면 jwt를 통해서 로그인으로 간주 할 수 있는데 이것을 대비하거나 방어 할 방법이 있나요? refresh token, access token을 사용해도 결국은 클라이언트 어딘가에 저장되어 있는 토큰 값을 알면 서버와의 통신이 가능한 상태가 되는거 아닌가요?

0

admin님의 프로필

admin

질문자

2021.05.25

serialize가 passport.serializeUser를 뜻하는게 맞습니다. 답변 감사드립니다. 그럼 passport.serializeUser를 사용하지 않으면 middlewares.js에 있는 밑의 isLoggedIn과 isNotLoggedIn을 사용 하지 못하는 건가요?

exports.isLoggedIn = (req,res,next)=>{
    //로그인 되어 있는지 아닌지 판별(isAuthenticated를 활용) 
    if (req.isAuthenticated()){
        next()
    }else{
        res.status(401).send('로그인이 필요합니다.')
    }
}

exports.isNotLoggedIn = (req,res,next)=>{
    //로그인 되어 있는지 아닌지 판별(isAuthenticated를 활용)
    if (!req.isAuthenticated()){
        next()
    }else{
        res.status(401).send('로그인 하지 않은 사용자만 접근 가능합니다.')
    }
}

jwt를 사용할 때는 req.headers.Authorization같은 곳에 토큰을 넣어서 씁니다. req.headers.Authorization에 토큰이 들어있는지, 그리고 유효한지 검사해서 유효하다면 로그인 상황이라고 판단하시면 됩니다.

0

serialize가 뭔가요? passport.serializeUser 말씀하시는 건가요? jwt 토큰을 쓰면 일반적으로 세션을 쓰지 않아서 serialize도 안 씁니다.