A modern, lightning-quick PoW captcha
一种现代的、闪电般快速的工作量证明验证码
Cap is a lightweight, modern open-source CAPTCHA alternative using proof-of-work
Cap 是一款轻量级、现代化的开源验证码替代方案,采用工作量证明机制。
widget?.addEventListener("solve", function (e: any) {
formData.code = e.detail.token;
});
});表单校验及提交不在赘述
服务端
以在 Nestjs 中使用为例
安装 @cap.js/server
npm i @cap.js/server在 Service 中创建 Cap 实例:
import Cap from "@cap.js/server";
import { InjectRepository } from "@nestjs/typeorm";
@Injectable()
export class LoginService {
// ...
cap: Cap = new Cap({ tokens_store_path: ".data/tokensList.json" });
//...
}
Cap 默认使用内存和文件存储 token,你可以将noFSState设置为true,仅使用内存存储 token。
你可以将此与设置config.state结合使用,以使用诸如Redis之类来存储令牌。
可以参考这个 Pull requests。
在 Controller 中创建接口:
import { BadRequestException, Body, Controller, Post } from "@nestjs/common";
import { LoginService } from "./login.service";
@Controller("login")
export class LoginController {
constructor(private readonly loginService: LoginService) {}