统计失败次数
本课属于 Coddy Node.js 学习旅程的“身份验证与安全”单元。第 21 课,共 24 课。
登录限流器需要跨请求记住失败次数。Map 会根据键存储值。将每个用户名用作键,这样一个账户的失败次数就不会影响其他账户。
const counts = new Map();
const old = counts.get('bo') ?? 0;
counts.set('bo', old + 1);counts.get(key)在键不存在时会返回 undefined,因此备用值会让计数从零开始。将 Map 放在请求函数外部,这样服务器运行期间就能保留它。此练习中的每个请求都代表一次失败尝试。过期处理会作为单独的步骤实现;目前,这个 Map 会持续计数,直到点击“运行”重启服务器。
挑战
简单这是一个小型练习项目。项目已提供配置,只编辑 exercise.js。
为提供的用户名递增计数,并将其返回到 count 中。向 /result 发送两次 POST 请求,数据为 {"username":"ada"}:计数依次为 1 和 2。发送 bo 会得到 1;再次发送 ada 会得到 3。
自己创建 Map,并将它放在合适的位置,这样第二个请求就能读取第一个计数。再次按“运行”会重启服务器并清空这个内存存储。
亲手试试
// 创建一个能在多次请求之间保留数据的计数存储。
export function exercise({ username }) {
return { count: 0 };
}
身份验证与安全中的所有课
自己练习: Express 在线编辑器