강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

th님의 프로필 이미지
th

작성한 질문수

[리뉴얼] React로 NodeBird SNS 만들기

passport module에 대해 질문이 있습니다.

해결된 질문

작성

·

150

0

안녕하세요 passport-local를 사용할 때 username만 받게 되면 원래 안되는건가요? 

제가 프로젝트를 진행하는데 메타마스크에서 지갑주소만 프론트에서 전달해주면 자동으로 로그인 되게끔 할려고 하는데 passwordField에 입력을 아예 안하면 401 에러만 자꾸 떠서 어쩔 수 없이 넣긴하였는데 형식상 nickname에 임의로 넣어서 postman에서 잘 동작 되는 것을 확인했습니다.

module.exports = () => {
    passport.use(new LocalStrategy({
        usernameField: `wallet_address`,
        passwordField: `nickname`
    }, async (wallet_address,nickname, done) => {
        try {
            const user = await User.findOne({ where : { wallet_address: wallet_address} });
            if (user.wallet_address === wallet_address) {
                return done(null, user)
            } else {
                return done(null, false, { message: '가입되지 않은 회원입니다.' });
            }
        } catch (error) {
            console.error(error);
            return done(error);
        }
    }));
};

그런데 logout을 강의처럼 코딩해서 했는데

Executing (default): SELECT `id`, `wallet_address`, `nickname`, `description`, `img_src`, `createdAt`, `updatedAt` FROM `users` AS `User` WHERE `User`.`id` = 1;

POST /user/logout - - ms - -

이런식으로 떠서 동작이 잘 안되는거 같아서 이곳 저곳 뒤져봤는데 해결책을 마땅히 찾을 수 없어서 의심되는 부분이 password를 빼먹어서 그런가 싶어서 여쭈어보고 저는 비번을 딱히 사용을 원치 않는데 이것이 문제라면 혹시 이런 필수 파라미터를 제약 받지 않는 다른 모듈도 있는건가요?

답변 1

0

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

password가 필수입니다.  제 생각에는 passwordField도 wallet_address로 하면 될 것 같습니다.

th님의 프로필 이미지
th
질문자

아 해결했습니다!! 엉뚱한 곳에서 문제가 있어더라구요 deserializeUser에 done(null, user)를 제가 추가를 안해서 오류가 났습니다.. 답변 감사합니다!

th님의 프로필 이미지
th

작성한 질문수

질문하기