The Debugging Chronicles : "코드의 미학"
React와 express로 회원 탈퇴 구현하기 본문
먼저 에러 났을 때 코드를 살펴 보자
>>>프론트
- session.js
const deleteUserApi = async () => {
try {
const token = localStorage.getItem('token'); // 또는 쿠키에서 가져오기
if (!token) {
throw new Error('No authentication token found');
}
const response = await fetch('http://localhost:8000/user/delete', {
method: 'DELETE',
headers: {
'Authorization': `Bearer ${token}` // JWT 토큰을 헤더에 포함
}
});
if (!response.ok) {
throw new Error('Failed to delete user');
}
localStorage.clear();
dispatch(deleteUser(null,false));
navigate("/logIn");
return response.json();
} catch (error) {
console.error('Failed to delete user:', error.message);
throw error; // 예외를 상위로 다시 던짐
}
};
const handleDeleteAccount = async () => {
try {
const result = await deleteUserApi();
console.log('Account deleted:', result);
} catch (error) {
console.error('Failed to handle account deletion:', error.message);
}
};
>>>백엔드
- controller/user/user.js
// JWT 회원탈퇴
const deleteUser = async (req, res) => {
const authenticateUser = req.user;
console.log(authenticateUser);
await User.deleteOne(authenticateUser);
res.status(200).json({
message : "회원 탈퇴가 완료되었습니다."
})
};
// JWT Strategy : HTTP Authorization 헤더에서 JWT를 추출하여
const configureJwtStrategy = () => {
return new Promise((resolve, reject) => {
const jwtOptions = {
jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken(),
secretOrKey: SECRET_KEY,
};
const strategy = new JwtStrategy(jwtOptions, async (jwtPayload, done) => {
try {
const user = await User.findById(jwtPayload.sub);
if (user) {
return done(null, user);
} else {
return done(null, false);
}
} catch (err) {
return done(err, false);
}
});
passport.use(strategy);
resolve();
});
};
// Passport 초기화 및 JWT Strategy 설정
const initializePassport = async () => {
await configureJwtStrategy();
app.use(passport.initialize());
};
'오류 원인 분석 해결 방안' 카테고리의 다른 글
ORA-01950: no privileges on tablespace 'USERS' (0) | 2024.07.30 |
---|---|
이클립스 오라클 드라이버 연결 제거 방법 (0) | 2024.07.30 |
cannot parse null string (0) | 2024.07.25 |
Null Point Exception (0) | 2024.07.18 |
React 와 express로 로그아웃 구현하기 (0) | 2024.07.03 |