2014-04-01 96 views
1

我有一個Wordpress站點和一個node.js應用程序,它們一起構成我正在構建的Web應用程序。我正在使用Node,因爲socket.io和Wordpress有許多其他原因。無論哪種方式,我不能放棄wordpress或節點在node.js中針對Wordpress驗證請求

我面對的問題是確保通過wordpress登錄的用戶在向節點服務器發出請求時是有效的用戶。

我應該在wordpress認證過程中將會話信息推送到節點服務器並讓它維護它自己的會話嗎?然後在後續的請求中使用Node服務器?

我很努力地想要解決這個問題,並希望得到任何幫助。

回答

1

看看passportjs這是一個用於提供不同身份驗證策略(截至今天超過140個)的node.js身份驗證模塊。幸運的是,有一個OAuth 2 stategy進行驗證反對wordpress。該策略的github頁面位於here

護照和passport-wordpress都可以通過npm包管理器安裝。之後,如果您的節點應用程序是express.js應用程序,則可以使用passport.authorize()路由中間件方法驗證每個請求的身份。從護照文檔wordpress:

定義策略。

passport.use(new WordpressStrategy({ 
    clientID: CLIENT_ID, 
    clientSecret: CLIENT_SECRET 
    }, 
    function(accessToken, refreshToken, profile, done) { 
    User.findOrCreate({ WordpressId: profile.id }, function (err, user) { 
     return done(err, user); 
    }); 
    } 
)); 

通過在你的路由passport.authorize使用策略(例如對於expressjs):

app.get('/auth/wordpress', 
    passport.authorize('wordpress')); 

app.get('/auth/wordpress/callback', 
    passport.authorize('wordpress', { failureRedirect: '/login' }), 
    function(req, res) { 
    // Successful authentication, redirect home. 
    res.redirect('/'); 
    }); 

如果你不使用expressjs或不想使用passportjs,請提供一些更多的信息如何你的wordpress安裝和你的node.js應用程序一起工作,以及你在node.js端使用什麼類型的框架。

+0

謝謝!護照似乎工作得很好。 – Johandk