2017-02-24 22 views
4

我希望用戶能夠以令牌啓動會話。無需輸入密碼。使用Mysql的本地令牌的Nodejs Passport

我使用護照本地令牌

https://www.npmjs.com/package/passport-local-token

,但似乎這將MongoDB的工作。

有什麼想法?

+0

關於你想問什麼不是很清楚。你能改說你的問題嗎? – manishg

+0

'護照本地token'適用於任何數據庫。 * example *使用Mongo,但您可以在處理程序中使用任何數據庫。它似乎並沒有被廣泛使用,但使用更好,例如。已經提到過'護照-jwt'。 – vesse

+0

http://stackoverflow.com/questions/17397052/nodejs-passport-authentication-token – bxN5

回答

0

我不知道在後的問題,如果你是在護照賣了100% JS,但如果你只是尋找基本的JSON網絡令牌功能,結帳,jsonwebtoken

他們是非常聰明的,你可以設置,以便由服務器生成的令牌你的web應用,回傳給您的前端,然後一認證響應被髮送回服務器。您的令牌設置在您的服務器端,您創建的密碼用於加密和解密。我做了一個利用它們的小項目,非常酷。還有其他的JSON網絡令牌,但由Auth0創建的人很好。

0

首先,你可以用你想用的護照或例如任何其他模塊 任何類型的數據庫讓我們說我使用mysql數據庫(MySQL npm package)我將不得不代碼適應SQL標準

//Start Connection to DB 
var mysql  = require('mysql'); 
var connection = mysql.createConnection({ 
    host  : 'localhost', 
    user  : 'me', 
    password : 'secret', 
    database : 'my_db' 
}); 

connection.connect(); 

passport.use('local-token', new LocalStrategy(
    function(token, done) { 

     connection.query('SELECT accessToken from AccessToken where id: ?', [token], 
      function (error, accessToken, fields) { 
       if (error) return done(error); 

       if (accessToken) { 
        if (!token.isValid(accessToken)) { 
         return done(null, false); 
        } 

        connection.query('SELECT * from User where id: ?', [accessToken.userId], 
         function (error, user, fields) { 
          if (error) return done(error); 
          if (!user) { 
           return done(null, false); 
          } 

          return done(null, user); 
         }) 
       } else { 
        return done(null); 
       } 
      }); 


    }) 
) 
相關問題