目前我正在爲nodejs創建一個Firebase API。我想用nodejs上的firebase-admin處理所有的Firebase資料(如身份驗證)。但是,通過firebase-admin 而不是客戶端上的Javascript Firebase SDK對用戶進行身份驗證的正確方法是什麼?在官方documentation for admin我沒有找到一個名爲的函數signInWithEmailAndPassword(就像在客戶端SDK上)的nodejs。只有一個函數叫做「getUserByEmail」,但是這個函數並不檢查用戶是否輸入了正確的密碼。如何在nodejs中驗證firebase-admin中的用戶?
這是我的形式:
<form class="sign-box" action="/login" method="post">
<div class="form-group">
<input id="username" name="username" type="text" class="form-control" placeholder="E-Mail"/>
</div>
<div class="form-group">
<input id="password" name="password" type="password" class="form-control" placeholder="Password"/>
</div>
<button type="submit" class="btn btn-rounded">Sign in</button>
</form>
一旦提交表單我值傳遞給我的API中的NodeJS:
app.post('/login', urlencodedParser, function (req, res) {
// getting the values
response = {
username: req.body.username,
password: req.body.password
};
// authenticate the user here, but how ?
});
我最初的想法是使用火力地堡SDK在客戶端上方面用signInWithEmailAndPassword並獲得uid。一旦我有UID,我想將UID發送到nodejs並調用函數createCustomToken,並將生成的令牌(帶有一些額外的聲明)返回給客戶端。一旦我獲得令牌,我將使用函數signWithCustomToken(在客戶端)對用戶進行身份驗證。這種方式是正確的還是有更好的方法?
通常,用戶在客戶端進行身份驗證。 Firebase經過優化,可以在客戶端運行。無論如何,如果你堅持,你可以在你的服務器上使用客戶端node.js'require('firebase')'庫。這就是你需要的客戶端API'signInWithEmailAndPassword'等。 – bojeil
是的,這是真的。我使用firebase-admin的原因是我可以將自定義聲明添加到令牌並將其發回給用戶。但是,這是在nodejs中使用firebase模塊的一種好方法,可以對令牌進行身份驗證並將其發回。謝謝! – Harry