2016-07-27 59 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

相关问题