하나의 빠른 응용 프로그램 내에 두 개의 다른 여권이 필요하다고 가정합니다 (예 : 사용자 & 회의실). 그래서 두 개의 별도 바르 정의 : 다음PassportJS - Express 응용 프로그램에서 여러 여권 사용
var passport = require('passport');
var roomPassport = require('passport');
을, 나는 별도의 여권 전략을 초기화 :
// required for passport
application.use(session({ secret: 'ilovepassport;-)' })); // session secret
application.use(passport.initialize({ userProperty: "user" }));
application.use(passport.session()); // persistent login sessions
application.use(roomPassport.initialize({ userProperty: "room" }));
application.use(roomPassport.session()); // persistent login sessions
application.use(flash()); // use connect-flash for flash messages stored in session`
:
require('./config/passport')(passport); // pass passport for configuration
require('./config/roompassport')(roomPassport); // pass passport for configuration
마지막 단계는 익스프레스 미들웨어로 설정하는 것입니다 그러나, 내가 이것을 좋아한다면 실제로 여권 여권은 여권을 무시하고 req.user와 req.room이라는 두 개의 객체 대신에 하나의 req.room을 가지고 있지만 초기화되어 있습니다. 사용자 데이터.
각 여권 (사용자 또는 회의실)은 서로 독립적으로 인증 될 수 있습니다. 즉, req.user
및 req.room
개체가 모두 존재해야하는 시나리오가 있습니다.
해결 방법?
EDIT 1
글쎄, 몇 시간 후, 그것은 보인다 내가 application.use(roomPassport.initialize({ userProperty: "room" }));
의 호출 후, 여권 객체를 분리 할 필요가 있지만, 상황이 혼란 얻을 - 그리고 req.login()
방법은 마지막으로 첨부 여권 작동 때문입니다 . 올바른 passport.serializeUser
메서드를 호출하는 대신 roomPassport.serializeUser
메서드를 호출합니다.
내 다음 질문 - req.login()
을 올바른 방법으로 호출하는 방법?
감사합니다. 친구, 내 하루를 저장했습니다. 그것은 내 문제를 해결하지만 완전히는 아닙니다. 별도의 passport.sessions가 필요합니다. 그렇지 않으면 두 암호 객체 모두 동일한 쿠키를 덮어 쓰기 때문입니다. 그래서 다음 질문은 - 두 개의 개별 세션을 설정하는 방법입니다 (아마도 이름을 지정하는 것일 수 있습니다). –
그냥 새 질문으로 여기에 넣어 http://stackoverflow.com/questions/25898629/passportjs-how-to-make-separate-passport-session –
안녕하세요, 귀하의 조언을 따라 또한 두 개의 다른 여권 구성 파일을 만든 2 개의 diff 지역 전략을 처리하십시오. 그러나 내가 원래 하나를 사용하여 로그인하려고하면 "Unknown strategy local-login"이라고 말하는 오류가 발생합니다. – codeinprogress