shetabit / captcha

此包的最新版本(v1.2)没有提供许可证信息。

Laravel 5 CAPTCHA 集成包

v1.2 2016-08-06 06:43 UTC

This package is auto-updated.

Last update: 2024-09-05 01:43:38 UTC


README

该包支持多种驱动程序,如果当前驱动程序列表中没有可用,您可以创建自定义驱动程序。

Laravel Captcha

Software License Latest Version on Packagist Quality Score

这是一个用于 CAPTCHA 集成的 Laravel 包。该包支持 Laravel 5.4+

该包支持多种驱动程序,如果当前驱动程序列表中没有可用,您可以创建自定义驱动程序。

内容列表

可用驱动程序列表

  • 简单:一个简单的图像 CAPTCHA。
  • 其他正在开发中。

如果列表中没有,您可以创建自己的自定义驱动程序,请参阅 创建自定义驱动程序 部分。

安装

通过 Composer

$ composer require shetabit/captcha

配置

如果您使用 Laravel 5.5 或更高版本,则无需添加提供者和别名。

在您的 config/app.php 文件中添加以下两行。

# In your providers array.
'providers' => [
    ...
    Shetabit\Captcha\Provider\CaptchaServiceProvider::class,
],

# In your aliases array.
'aliases' => [
    ...
    'Payment' => Shetabit\Captcha\Facade\Captcha::class,
],

然后运行 php artisan vendor:publish 以在配置目录中发布 config/captcha.php 文件。

在配置文件中,您可以设置用于所有支付的 默认驱动程序。但是,您也可以在运行时更改驱动程序。

选择您想要在应用程序中使用的网关。然后将其作为默认驱动程序,这样您就无需在每个地方指定它。但是,您也可以在一个项目中使用多个网关。

// Eg. if you want to use simple. (simple is the driver's name)
'default' => 'simple',

然后查看驱动程序数组中的配置。

'drivers' => [
    'simple' => [
        'middleware' => ['web'], // middleware
        'route' => 'captcha', // route name
        'characters' => 'ABCDEFGHIKJLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz123456789',
        'width'  => 230,
        'height' => 70,
        'foregroundColors' => ['2980b9','2E9FFF','FF1166','000000','22EE99'],
        'backgroundColor' => '#FFF',
        'letterSpacing' => 6,
        'fontFamily' => resource_path('views/vendor/captchaSimpleDriver/assets/fonts/DroidSerif.ttf'),
        'fontSize' => 30,
        'length' => [4, 6],
        'scratches' => [5, 8],
        'sensitive' => false,
        'sessionKey' => 'captcha',
    ],
    ...
]

如何使用

您需要两个步骤

  • 在表单中添加 CAPTCHA
  • 添加验证

在表单中添加 CAPTCHA

在您的代码中,如下所示使用它

<form>
...

{!! captcha() !!}

...
</form>

如果您使用 simple 驱动程序,可以轻松更改样式和 UI,只需查看 resources/views/vendor/captchaSimpleDriver.blade.php

验证

为了验证使用 CAPTCHA 的表单,您可以使用 captcha 验证规则。

以下示例展示了有关 CAPTCHA 验证的所需所有信息

...

$request->validate([
    'email' => 'required|email',
    'password' => 'required|string',
    'captcha' => 'required|captcha',
]);

...

创建自定义驱动程序

首先,您必须在驱动程序数组中添加您驱动程序的名字,还可以指定您想要的任何配置参数。

'drivers' => [
    'simple' => [...],
    'my_driver' => [
        ... # Your Config Params here.
    ]
]

现在,您必须创建一个用于支付发票的驱动程序映射类。在您的驱动程序中,您只需扩展 Shetabit\Captcha\Abstracts\Driver

例如:您创建了一个类:App\Packages\CaptchaDriver\MyDriver

namespace App\Packages\CaptchaDriver;

use Illuminate\Support\ServiceProvider;
use Shetabit\Captcha\Abstracts\Driver;

class MyDriver extends Driver
{
    protected $serviceProvider;

    /**
     * Driver settings.
     *
     * @var object
     */
    protected $settings;

    public function __construct(ServiceProvider $serviceProvider, $settings)
    {
        $this->serviceProvider = $serviceProvider;
        $this->settings = (object) $settings;
    }
    
    /**
        you must write your captcha generation 
        logic in the below method.
    **/
    public function generate()
    {
        ...
    
        // create captcha view and return it
        return View::make('yourCustomDriverView');
    }

    /**
        you must write your captcha verification
        logic in the below method.
    **/
    public function verify($token = null)
    {
        ...
    
        $storedToken = ...

        if (empty($this->settings->sensitive)) {
            $storedToken = mb_strtolower($storedToken);
            $token = mb_strtolower($token);
        }

        return $token == $storedToken;
    }
    
}

一旦创建了这个类,您就必须在 captcha.php 配置文件的 map 部分中指定它。

'map' => [
    ...
    'my_driver' => App\Packages\CaptchaDriver\MyDriver::class,
]

注意:您必须确保 map 数组的键与 drivers 数组的键相同。

变更日志

请参阅 CHANGELOG 了解最近的变化。

贡献

请参阅 CONTRIBUTINGCONDUCT 了解详细信息。

安全

如果您发现任何安全问题,请通过电子邮件 hashemm364@gmail.com 而不是使用问题跟踪器。

鸣谢

许可证

麻省理工学院许可证(MIT)。请参阅许可文件以获取更多信息。