-
카테고리
-
세부 분야
풀스택
-
해결 여부
미해결
passport로 로그인 에러 시 payload 전달 방법
22.08.03 17:03 작성 조회수 349
1
강사님, 안녕하세요.
혼자서 해보려다가 도저히 모르겠어서 질문 드립니다.
로그인 에러 시 각각 상황에 맞는 logInError를 안내하고 싶어서 제작 중인데,
회원가입할때도 다른 작업할때도 에러나면 payload 값이 잘 나오던데,
로그인 할때만 에러나면 Payload 값이 undefined 로 나오네요.
회원가입한적 없는 아이디일때 "존재하지 않는 이메일입니다"
아이디는 있으나 비밀번호가 틀렸을때 "비밀번호가 틀렸습니다"
/back/routes/user.js 에서
//SignUp
router.post('/', isNotLoggedIn, async (req, res, next) => {
try {
***
if (exUser) {
return res.status(403).json('이미 가입된 아이디입니다.');
}
***
} catch (error) {
console.error(error);
next(error);
}
});
이렇게 json 형태로 에러 메시지를 적어주면 front로 전달된다고 배웠고, 회원가입이나 다른 호출은 다 잘 출력됩니다.
그런데 login 쪽만 payload(logInError)가 undefined로 나옵니다. (개발자도구 네트워크에서는 메시지가 잘 찍힙니다.)
router.post('/login', isNotLoggedIn, (req, res, next) => {
passport.authenticate('local', (err, user, info) => {
***
if (info) {
return res.status(401).json(info.reason);
}
***
})(req, res, next);
});
/back/passport/local.js
***
module.exports = () => {
passport.use(
new LocalStrategy(
***
async (userid, password, done) => {
try {
***
if (!user) {
return done(null, false, { reason: '존재하지 않는 이메일입니다!' });
}
***
return done(null, false, { reason: '비밀번호가 틀렸습니다.' });
} catch (error) {
***
}
}
)
);
};
//회원가입 페이지
/front/reducers/user.js
//회원가입 페이지
//로그인 페이지
회원가입과 다르게 로그인은 passport가 쓰여서인듯 한데,
에러 났을때 payload 값을 가져오게 할 방법이 있을까요?
답변을 작성해보세요.
0
Graham
질문자2022.08.03
/front/actions/user.js
//회원가입
export const SIGN_UP = createAsyncThunk(
'user/signup',
async (data, { rejectWithValue }) => {
try {
const response = await axios.post('/user', data);
return response.data;
} catch (error) {
return rejectWithValue(error.response.data);
}
}
);
//로그인
export const LOG_IN = createAsyncThunk(
'user/login',
async (data, { rejectWithValue }) => {
try {
const response = await axios.post('/user/login', data);
return response.data;
} catch (error) {
return rejectWithValue(error.reponse.data);
}
}
);
회원가입, 로그인 거의 동일한 코드 입니다.
제가 놓치고 있는 부분이 있을까요?
답변 1