我对网站身份验证不熟悉,而且我已经对您可以使用的各种用户身份验证(例如会话与令牌身份验证)进行了大量阅读。然而,很多看起来比我需要的更多,而且我不确定哪些适合我的事业。
我的想法是生成临时用户帐户和密码,这些帐户和密码将在首次使用后过期。我希望这与我的网站集成,因此他们有一次机会查看受限制的页面,之后他们将不允许再次访问这些部分(除非提供新的凭据)。
正确的步骤中的任何方向都将受到赞赏。
更新:我使用Javascript(Node)作为我的服务器端语言
答案 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();
});