와 deserializeUser 전화를 어떻게 deserializeUser가 작동하도록되어 방법에 대한 다음과 같은 게시물을 발견 : 나는 시도하지만 PassportJS serializeUser and deserializeUser execution flow여권
및 사용자에 대한 키를 포함하는 서버에 JSON을 보내기를, 나는 REQ 호출 할 수 없습니다 .user를 사용하여 사용자의 세부 정보를 찾습니다.
많은 것들이 두포에서 일어나기 때문에 무슨 일이 일어나는지 확인하는 방법에 대해 확신이 서지 않습니다.
키가 포함되어 있다고 표현하기 위해 패스포트에 쿠키를 보내겠습니까? 쿠키 또는 형식의 특정 이름은 무엇입니까? 키를 JSON 형식으로 보내야합니까?
const express = require('express')
const app = express()
const mongoose = require('mongoose')
var cors = require('cors')
const bodyParser = require('body-parser')
var http = require('http')
var cookieParser = require('cookie-parser');
app.use(cookieParser('someSecret'));
var session = require('express-session');
app.use(session());
var flash=require("connect-flash");
app.use(flash());
passport.use(new LocalStrategy({
usernameField: 'username',
passwordField: 'password',
session: true,
passReqToCallback: true
},
function(req, username, password, done){
registrationModel.findOne({username: username}, function(err, user){
if (err) { return done(err); }
if (!user){
console.log("Username incorrect")
return done(null, false, { message: 'Incorrect username.'});
}
if (user.password != password){
console.log("Password Incorrect")
return done(null, false, { message: 'Incorrect Password.'});
} else {
console.log("Returning good stuff")
console.log(user)
return done(null, user);
}
});
}
));
//Needed for authenticating the session and initializing passport
app.use(passport.initialize());
app.use(passport.session());
passport.serializeUser(function(user, done) {
console.log("Serializing User")
console.log(user.id)
console.log("Should be serialized")
done(null, user.id);
});
passport.deserializeUser(function(id, done){
users.User.findById(id, function(err, User) {
console.log('attempting to deserialize user')
console.log(user)
console.log('--------------')
if (User){
done(err, User);
} else {
done(err, null);
}
})
})
app.post('/api/authenticate', passport.authenticate('local'),
function(req, res){
const individualIWant = jsonQuery('req.sessionStore.sessions')
res.cookie('FreeUp', req.session.passport.user)
var cookie = JSON.stringify(req.session.passport.user)
res.send({'name': 'FreeUp', 'value': cookie})
})
내가 브라우저에서 쿠키를 볼 수 있습니다 이름 : "FreeUp" 값 : ""59c4cf4ecb364a000f23a707 ""
값은 데이터베이스 오브젝트 ID가 아니라 일련의 키입니다 목적. res.req.sessionID를 사용하여 직렬화 된 객체의 키에 액세스하고 그 객체를 대신 보내야한다는 것을 이해합니다.
그러나 여전히 요점은 json 파일이나 쿠키로 되돌릴 지 모르겠다. 그것은 복잡한 라이브러리를 사용하는 것처럼 보입니다.
Ember에서 데이터를 다시 보낼 때 Passport에서 사용할 것으로 예상되는 형식은 무엇입니까?
감사합니다.
애플리케이션을 어떻게 구성했는지 보여줄 수 있습니까? 귀하의 질문에 대한 답변은 그것에 크게 의존합니다. – Paul