2017-03-09 37 views
0

我打算爲我的流星應用程序編寫一個單獨的API,可用於連接移動應用程序和其他第三方系統。我目前使用原生流星插件來直接連接流星應用程序。但我們需要將移動應用與流星相分離。爲此,我將創建一個直接連接到數據庫的獨立API。因此,我將可以訪問Meteor創建的舊用戶帳戶。我可以使用相同的帳戶通過護照認證用戶嗎?如何使用passportjs在沒有流星的流星數據庫中驗證用戶?

回答

1

是的。假設你有用戶名和密碼,你可以通過加密給定的密碼然後將其與用戶存儲的密碼進行比較來使用帳戶包。下面是你如何使用npm包在Meteor中做到這一點。

function authenticateUser(username, password){ 
    //encrypting password 
    var bcrypt = Package['npm-bcrypt'].NpmModuleBcrypt; 
    var SHA256 = Package.sha.SHA256; 
    var hashedPass= SHA256(password); 
    var bcryptHash = Meteor.wrapAsync(bcrypt.hash); 
    hashedPass = bcryptHash(hashedPass, 10); 
    //current password 
    var user = Meteor.users.findOne({username:username}) 
    if (user) { 
     var pass = user.services.password.bcrypt; 
     return pass === hashedPass; 
    } 
    return false; 
} 
+0

如何做到這一點,而無需使用任何流星包或方法? – THpubs

+0

查找執行SHA256和bcrypt的庫(以您使用的任何語言或框架爲外部API),並使用它們對密碼進行編碼,如我的示例中所示。我在這裏使用npm模塊。如果您要求構建外部API,則可以使用api_key和api_secret直接連接到數據庫以獲取用戶的信息。我們已經建立了一個Elixir語言。 – mutdmour