我目前正試圖在我的節點服務器上使用護照來進行項目上的Twitter身份驗證。當我有一個服務器文件中的所有代碼護照功能如預期。下面是從服務器上文件的摘錄,在它所有的航線有:將passport.js從節點服務器文件集成到路由文件
passport.use(new TwitterStrategy({
consumerKey: config.twitter.consumer_key,
consumerSecret: config.twitter.consumer_secret,
callbackURL: config.twitter.callback_url.dev
}, (token, tokenSecret, profile, done) => {
console.log(token, tokenSecret, profile, done);
process.nextTick(() => {
return done(null, profile);
});
}));
app.use(session({ secret: 'SOMESECRET' }));
app.use(passport.initialize());
app.use(passport.session());
app.use(express.static(path.join(__dirname, '../public')));
app.set('view engine', 'ejs');
// expose to routes
app.all('*', (request, response, next) => {
request.log = log;
next();
});
app.get('/', (req, res) => {
res.render('pages/index.ejs');
});
// twitter auth endpoint
app.get('/auth/twitter', passport.authenticate('twitter'));
// twitter auth callback endpoint
app.get('/auth/twitter/callback', passport.authenticate('twitter', { failureRedirect: '/' }), (req, res) => {
res.redirect('/');
});
然而,當我嘗試從服務器文件揭露護照路由文件的驗證永遠不會發生。我在這裏搜索了大部分問題,並返回到文檔,但所有教程都顯示了一個包含所有路由的服務器文件。
服務器文件:
passport.use(new TwitterStrategy({
consumerKey: config.twitter.consumer_key,
consumerSecret: config.twitter.consumer_secret,
callbackURL: config.twitter.callback_url.dev
}, (token, tokenSecret, profile, done) => {
console.log(token, tokenSecret, profile, done);
process.nextTick(() => {
return done(null, profile);
});
}));
app.use(session({ secret: 'SECRET' })); // session secret
app.use(passport.initialize());
app.use(passport.session());
app.use(express.static(path.join(__dirname, '../public')));
app.set('view engine', 'ejs');
// expose to routes
app.all('*', (request, response, next) => {
request.log = log;
request.passport = passport;
next();
});
// routes
app.use('/', routes);
路線文件:
import express from 'express';
const routes = express.Router();
import config from '../config.js';
// main
routes.get('/', (req, res) => {
res.render('pages/index.ejs');
});
// twitter auth endpoint
routes.get('/auth/twitter', (req, res) => {
const passport = req.passport;
passport.authenticate('twitter');
});
// twitter auth callback endpoint
routes.get('/auth/twitter/callback', (req, res) => {
const passport = req.passport;
passport.authenticate('twitter', {
failureRedirect: '/'
});
res.redirect('/');
});
module.exports = routes;
缺少什麼我在這裏?我猜我不能在路線的功能裏面使用passport.authenticate
。我仍然試圖弄清楚如何使用路由文件工作來獲取版本。任何幫助表示讚賞!
爲什麼你再次redifine在路由文件的路徑和你的日誌什麼 – douxsey
uhm im不清楚你在問什麼@douxsey?顯示路線文件是因爲有兩次嘗試使這項工作如我在文章中所述。此外,這篇文章不是關於日誌,我沒有看到如何在我的問題的因素。 – SMT