2016-07-27 47 views
0

我是新來的網站身份驗證,我一直在做大量的閱讀,你可以使用不同類型的用戶身份驗證(例如會話與令牌身份驗證)。但是,它看起來比我需要的要多,而且我不確定哪些適合我的事業。如何着手爲網站創建臨時身份驗證?

我的想法是生成臨時用戶帳戶和密碼,這些帳戶和密碼將在第一次使用後過期。我希望將其與我的網站集成在一起,以便他們有機會查看受限制的頁面,之後他們將不再允許訪問這些部分(除非提供新的憑據)。

任何方向在正確的步驟將不勝感激。

更新:我使用Javascript(節點)作爲我的服務器端語言

+0

哪個服務器端語言是您使用? – Nitin

+0

@Nitin我正在使用JavaScript(節點) – Jain

回答

1

基於會話的認證實際上是非常輕量級的,如果您使用的是節點的後端,由於大部分(如果不是全部)的Web服務器庫支持「中間件」,它們在請求路由功能之前修改請求。 Express-compatable中間件client-sessions對此非常棒,我以前在一個項目中使用它,取得了巨大的成功。它會在用戶向您的網站發出的第一個請求中添加一個cookie,以識別它們,並且如果在某個時刻登錄,您可以將該會話標記​​爲已驗證,存儲會話信息以及與其相關的其他數據。

假設你想同時登錄&註銷,最簡單的方法將是使用通過HTTPS POST到login & logout路線。在登錄路徑的分辨率內部,您只需在與您一起工作的任何數據庫中「標記爲刪除」即可。

一個例子可能是這樣的:

var app = express(); 

function authenticate(user, pw){ 
    //do your application specific login verification here 
} 

function deleteAccount(user){ 
    //do your application specific user removal here 
} 

app.use(require("express-session")({ 
    secret : "YOUR-SECRET-KEY-HERE" 
    cookieName : "Session" 
    //any other desired config options go here 
}) 

app.post("/login", function(req, res){ 
    var user = req.body.user; 
    var pw = req.body.pw; 
    req.Session.isAuthenticated = authenticate(user, pw) 
    if(req.Session.isAuthenticated){ 
     markForDeletion(user, pw); 
    } 
    res.write("logged in as: " + user); 
    res.end(); 
}); 
app.post("/logout", function(req, res){ 
    deleteAccount(req.Session.username); 
    req.Session.username = ""; 
    req.Session.isAuthenticated = false; 
    res.write("logged out!"); 
    res.end(); 
}); 
+0

謝謝!這是一個很好的開始! – Jain