stefan-z/laravel-sanctum-captcha

为无状态的 Laravel Sanctum API 创建验证码图像

0.0.6 2023-10-29 14:05 UTC

This package is auto-updated.

Last update: 2024-09-29 15:59:34 UTC


README

此项目是为那些已经实施基于 Laravel-Sanctum 的 API 而没有使用基于状态会话的临时存储可能性,并且希望简单地创建验证码图像(例如,用于他们的登录过程)的人准备的。

基本思想是向用户提供一张图片和加密文本。一旦在您的网站上显示该图片,用户必须提交一个输入并提供给您加密文本。然后,您的服务器端实现可以接收这两个输入,并使用与创建验证码时相同的类和密钥(用于验证码)来验证用户输入是否确实是显示的验证码。

以下属性可以通过简单的 Builder-Interface 设置

  • 密钥
  • 加密算法(默认为 aes-128-cbc)
  • 验证码长度
  • 背景颜色
  • TTF 字体
  • 行数
  • 点数

示例

$captcha = (new SecureImage(env('CAPTCHA_SECRET')))
            ->setFont(__DIR__
            . DIRECTORY_SEPARATOR . '..'
            . DIRECTORY_SEPARATOR . '..'
            . DIRECTORY_SEPARATOR . '..'
            . DIRECTORY_SEPARATOR . 'resources'
            . DIRECTORY_SEPARATOR . 'fonts'
            . DIRECTORY_SEPARATOR . 'arial.ttf')
        ->setNumberOfLines(20) // Random Lines for obfuscation
        ->setNumberOfDots(800) // Random Dots for obfuscation
        ->setBackground(150, 150, 150, 0.4) // RGBA
        ->setLength(7) // Captcha-Length
        ->setWidth(200) // Image Width
        ->setHeight(100); // Image Height

        return $captcha->generateCaptcha();

Example

$captcha = new SecureImage(env('CAPTCHA_SECRET'));
return $captcha->is_valid($user_input, $cipher_text_generated_with_captcha);