我正試圖找到有關最簡單的登錄與護照節點應用程序的資源。我的意思是,採用:Passport.js本地策略不帶貓鼬
中間件:
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: false}));
app.use(cookieParser());
app.use(session({ secret: 'keyboard cat', resave: false, saveUninitialized: false }));
app.use(passport.initialize());
app.use(passport.session());
app.use(express.static('public'));
護照:
passport.serializeUser(function(user, done) {
done(null, user.id);
});
passport.deserializeUser(function(id, done) {
done({ id: id, nickname: "test"})
});
passport.use(new LocalStrategy(
function(username, password, done) {
console.log("test");
if (username === 'username') {
return done(null, { name: "test", id: '1234'});
} else {
return done(null, false, { message: 'Incorrect cred.' });
}
})
)
和重定向:
app.post('/login',
passport.authenticate('local', {
successRedirect: '/index.html',
failureRedirect: '/login'
})
);
我的應用程序結構:
/app.js
/public/index.html
/public/login.html
就是這樣。 Web充滿了帶插件的Mongoose相同的例子,每個人都簡單地複製粘貼。
問題是,我希望稍後在LocalStrategy代碼中插入自己的代碼(可能會使用LDAP)。
目前,我並沒有使用在公共文件夾中創建的頁面重定向到/index.html,而是在index.html上收到[object Object]
。
您的代碼缺少'passport.serializeUser/deserializeUser'。添加這些後,它工作得很好(儘管'failureRedirect'指向一個不存在的URL)。 – robertklep
對不起,我忘了添加它(只需編輯問題)。那麼,我的成功重定向不能按預期工作/: – Chen
因此,它實際上是對'/ index.html'的請求導致了問題,而不是對'/ login'的'POST'?我沒有看到對/ index.html的請求可能會失敗。 – robertklep