记住用户登录状态Redis实现神奇的登录保持(记住登录状态 redis)
记住用户登录状态是大多数Web应用都免不了的需求之一,要实现的话,通常采用的技术就是Cookie 和Session技术。但有人提出了一个新的方案,利用Redis来实现神奇的登录保持,本文就来让大家一起了解这种技术能为我们节省多少时间并提升用户体验。
让我们来看看一般的Cookie和Session技术需要做些什么:首先客户端(如浏览器)向服务器发起请求,服务器验证用户信息是否合法,然后返回响应,同时在响应中把一个Cookie发送给客户端标识用户。此后客户再次访问服务器的时候就会带上这个Cookie了,服务器就会拿着这个Cookie,去服务器端的Session管理器里取出当前登录用户的信息。
为了避免这一繁琐的步骤,就有了Redis实现神奇的登录保持这种方案。其原理是:客户端发起请求,服务器验证身份后,随机生成一个Token,把Token和当前登录用户的信息存储到Redis中,然后将Token发送给客户端,客户端之后每次访问该服务器就会把Token带上,服务器拿到Token就可以在Redis中快速查找到当前登录用户的信息,快速完成登录。
下面是利用Node.js+Redis技术实现神奇的登录保持的示例代码:
// 生成Token
let token = Math.random().toString(36).substr(2);
// 把token和登录信息存储到Redis里redisClient.set(token, loginUserInfo, (err) => {
// 返回token 给客户端 res.send({token});
});
// ...// 服务器拿到token
let token = req.query.token;
// 查询数据库,用于登录验证redisClient.get(token, (err, loginUserInfo) => {
// ...});
从上面的代码可以看到,Redis实现神奇的登录保持技术可以省去了Cookie和Session技术的一系列操作,有效地提升了用户体验。在实际应用中,我们还可以通过把Token设置有效期并定期清理过期Token来做进一步优化。
Redis实现神奇的登录保持是一项无论是从用户体验还是开发效率上来看都很值得推广的技术,希望本文对大家有所帮助。