본문 바로가기

Node.js

Unknown authentication strategy "local" / Error: failed to serialize user into session 에러

1. Unknown authentication strategy "local"

 

 

passport 셋팅 및 프론트와의 회원가입,로그인 연동을 진행하면서 해당 에러가 발생했다.

말 그대로 local을 찾을 수 없다는데, 이미 passport에 local.js는 정상적으로 코드가 작성되어있고, 연결되어있었다.

 

// passport/local.js

const passport = require("passport");
const bcrypt = require("bcrypt");
const { Strategy: LocalStrategy } = require("passport-local");
const db = require("../models");

//이 로컬스트레지는 자동으로 실행이 되는게 아니라 우리가 실행 시켜주어야 한다.
//로그인 요청이 들어왔을때. app.js/ app.post에서.
module.exports = () => {
  passport.use(
    new LocalStrategy(
      {
        //검사가 이루어지며, 아래 email과 password가 있는 자리에는 body에 해당되는 것을 넣어주면 된다.
        usernameField: "email", //req.body.email
        passwordField: "password" // req.body.password
      },
.
.
.

이럴때에는 local을 한번 실행해줘서 등록절차를 밟아야 정상적으로 실행된다.

 

passport폴더의 index.js파일에 등록절차를 밟아주도록 한다.

 

// passport/index.js

const passport = require("passport");
const local = require("./local");
const db = require("../models");

module.exports = () => {
  passport.serializeUser((user, done) => {
    return done(null, user.id);
  });
passport.deserializeUser(async (id, done) => {
    try {
      const user = await db.User.findeOne({ where: { id } }); 
      return done(null, user);
    } catch (err) {
      console.error(err);
      return done(err);
    }
  });
  //실행을 한번 시켜줘야 등록이 될 것이다.
  local();
};

이런식으로 한번 실행을 시켜주면 정상적으로 작동한다.

 

 


2. Error: failed to serialize user into session

 

위의 local을 찾을 수 없다던 에러를 해결하고나니 이번엔 세션을 연결하지 못했다는 에러가 뜬다

 

나도 이 에러때문에 1시간을 아깝게 날려먹었지만 알고보니 간단한 문제였다.

 

메인 app.js에서 passportConfig()를 연결해주어야 비로소 세션이 패스포트를 타고 잘 흘러가게 된다.

 

// app.js

const db = require("./models");
const passportConfig = require("./passport");
const app = express();

//서버시작할때 app.js가 실행되면서 db.sequelize.sync가 같이 실행됨
//sync괄호 옆의 force:true하면 서버 열때마다 데이터가 초기화된다.
db.sequelize.sync();
passportConfig();
.
.
.

 

passportConfig()를 통해 비로소 원활하게 연동이 완료되었다.

 

 

'Node.js' 카테고리의 다른 글

npm --save가 동작하지 않을때.(package.json저장)  (0) 2019.12.19
첫 Node webserver 구동  (0) 2019.10.29
node.js설치  (0) 2019.10.29