HapiJS 및 Hapi-auth-cookie 전략을 사용하여 앱에 대해 작은 REST 백엔드를 작성 중이지만 제대로 작동하지 않습니다. 나는이 같은 경로를 정의했습니다 :Hapi-auth-cookie는 쿠키를 설정하지만 validationFunc 호출을 실행하지 않고 무단으로 throw하지 않습니다.
/를 - 프런트 엔드를 응용 프로그램의 일부를 봉사
/로그인가 - 쿠키를
을 설정하려고 마지막으로 다음 사용자에 대한 확인 암호를 비교하고 MongoDB를 수행/레스토랑 - 내가 정식으로 확보하기 위해 노력 : '세션'하지만
내가 정의한 전략을 작동 할 수 없습니다가 (거의 게요! - 인증 - 쿠키 GitHub의 파에서 과거를 복사 ge),하지만 주목하지만 console.log를 사용하여 validateFunc가 전달 된 전략 옵션은 한번도 호출되지 않습니다. 왜? 그것은 내 주요 문제인가 아니면 내 다른 부분의 코드가 고장 났는가?
일부 코드 샘플 :
세션 인증 전략 정의 : 전략에 의해 보호
login: (request, reply) => {
const dbQuery = {
email: request.payload.email
};
UserSchema.findOne(dbQuery, (err, user) => {
if (err) {
return console.log(err);
}
if (!user) {
return reply(Boom.unauthorized());
}
Bcrypt.compare(request.payload.password, user.password, (err, res) => {
if (err) {
return console.log(err);
}
if (!res) {
return reply(Boom.unauthorized());
}
const sid = String(123);
request.server.app.cache.set(sid, { account: user }, 0, (err) => {
if (err) {
reply(err);
}
request.cookieAuth.set({ sid: sid });
return reply("ok");
});
})
});
}
경로 정의 : 설정 쿠키에 대한 책임
exports.register = function(server, options, next) {
const cache = server.cache({ segment: 'sessions', expiresIn: 3 * 24 * 60 * 60 * 1000 });
server.app.cache = cache;
server.auth.strategy('session', 'cookie', false, {
password: 'password-should-be-32-characters',
cookie: 'lun-cookie',
redirectTo: false,
isSecure: false,
ttl: 20 * 1000,
validateFunc: function (request, session, callback) {
cache.get(session.sid, (err, cached) => {
if (err) {
return callback(err, false);
}
if (!cached) {
return callback(null, false);
}
return callback(null, true, cached.account);
});
}
});
return next();
};
로그인 방법
{
method: 'GET',
path: '/restaurants',
handler: controller.getRestaurants,
config: {
validate: {
query: {
list: Joi.string().allow('full').optional(),
type: Joi.string().valid(restaurantTypeEnum).optional(),
}
},
auth: 'session',
}
}
아이디어가 있으십니까? 나는 그것을 이해하려고 벌써 2 일을 보냈다. 우선