Tek bir ekspres uygulamada iki farklı pasaporta ihtiyacım var (örneğin, kullanıcı & odası). Yani iki ayrı değişkenler tanımlar: o zamanPassportJS - Express uygulamasında birden fazla pasaport kullanma
var passport = require('passport');
var roomPassport = require('passport');
, ben ayrı pasaport stratejileri ile onları başlatmaya:
// 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
Son adım Ekspres katman olarak ayarlamaktır Ancak, ben bunu böyle yapsaydım, aslında roomPassport pasaportu geçersiz kılar ve iki nesne - req.user ve req.room yerine, sadece bir req.room'um var ama Kullanıcı bilgisi. Her bir pasaportun (kullanıcı veya oda) birbirinden bağımsız olarak kimlik doğrulaması yapılabileceğinin belirtilmesi önemlidir, yani her iki nesnenin de req.user
ve req.room
var olması gereken bir senaryo vardır.
Bu nasıl çözülür?
DÜZENLEME 1
Eh, birkaç saat sonra, öyle görünüyor ben application.use(roomPassport.initialize({ userProperty: "room" }));
çağrısına sonra, pasaport nesneleri ayırmak zorunda olmasına rağmen, işler karıştığında bu - ve req.login()
yöntem son ekli pasaport ile çalıştığı için bu . Dolayısıyla, doğru passport.serializeUser
yöntemini çağırmak yerine, roomPassport.serializeUser
yöntemini çağırır.
Sıradaki sorum - doğru yöntemi aramak için req.login()
nasıl yapılır?
Teşekkürler dostum, günümü kurtardın! Sorunumu çözüyor ama tamamen değil. Her iki şifre nesnesi de aynı çerezi geçersiz kıldığından, ayrı pasaportlara ihtiyacım olacak gibi görünüyor. Öyleyse bir sonraki sorumuz - iki ayrı oturum nasıl kurulur (muhtemelen onlara isim verir)? –
Sadece yeni bir soru olarak buraya koydum http://stackoverflow.com/questions/25898629/passportjs-how-to-make-separate-passport-session –
Hey, tavsiyelerinizi takip ettim ve ayrıca iki farklı pasaport yapılandırma dosyası oluşturdum. iki farklı yerel stratejiyi ele alalım. Ancak, orijinal olanı kullanarak giriş yapmayı denediğimde, "Bilinmeyen strateji yerel giriş" hatası vererek hata atar. – codeinprogress