인증(로그인)여부를 확인하는 미들웨어 추가하기 | Node.js 게시판 프로젝트

mj·2025년 1월 11일
0

ktb

목록 보기
19/27

로그인한 사용자만 이용가능한 서비스의 경우(게시물 열람, 게시물 및 댓글 작성 등), 로그인했는지 확인하는 과정이 필요하다. 이때마다 아래처럼 확인하는 코드를 매번 작성하는것은 귀찮기도하고 관리하기에도 부적합하다. 이럴때 미들웨어를 적용해주면 된다.

기존 코드

/controllers/usersController.js

export const editProfileController = async(req, res) => {
    const userId = req.session.userId;
    const { isProfileImageChanged } = req.body;

  	// 인증(로그인) 여부를 확인함
    if (!userId) {
        return res.status(401).json({ message: "로그인 필요" });
    }

    try{
        const previousImageName = await getProfileImageNameByUserId(userId);
        let profileImageName = previousImageName;

        if(isProfileImageChanged === 'true'){
            profileImageName = req.file ? req.file.filename : DefaultProfileImageName;
        
...

미들웨어 적용 후 코드

/middleware/auth.js

// 인증 여부 확인 미들웨어
export function checkAuth(req, res, next) {
    if(req.session.userId) {
        return next();
    }
    return res.status(401).json({ message: "로그인이 필요합니다."});
}

/routes/postsRoutes.js

// 미들웨어 checkAuth가 추가됨.
router.put('/:postId', checkAuth, upload.single('postImage'), editPostController);

/controllers/usersController.js

export const editProfileController = async(req, res) => {
    const userId = req.session.userId;
    const { isProfileImageChanged } = req.body;

  	// 인증(로그인) 여부를 확인하는 코드를 뺌.(미들웨어에서 처리해주므로)

    try{
        const previousImageName = await getProfileImageNameByUserId(userId);
        let profileImageName = previousImageName;

        if(isProfileImageChanged === 'true'){
            profileImageName = req.file ? req.file.filename : DefaultProfileImageName;
        
...
profile
일단 할 수 있는걸 하자.

0개의 댓글

관련 채용 정보