如何为网站创建临时身份验证?

时间:2016-07-27 17:26:45

标签: javascript node.js authentication browser

我对网站身份验证不熟悉,而且我已经对您可以使用的各种用户身份验证(例如会话与令牌身份验证)进行了大量阅读。然而,很多看起来比我需要的更多,而且我不确定哪些适合我的事业。

我的想法是生成临时用户帐户和密码,这些帐户和密码将在首次使用后过期。我希望这与我的网站集成,因此他们有一次机会查看受限制的页面,之后他们将不允许再次访问这些部分(除非提供新的凭据)。

正确的步骤中的任何方向都将受到赞赏。

更新:我使用Javascript(Node)作为我的服务器端语言

1 个答案:

答案 0 :(得分:1)

基于会话的身份验证实际上非常轻量级,如果您使用的是Node后端,因为大多数(如果不是全部)Web服务器库都支持“中间件”,这些库会在请求到达您的路由功能之前对其进行修改。可与Express兼容的中间件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();
});