bhekor / laravel-geetest
Laravel的Geetest包
Requires
- php: >=7.3
- illuminate/routing: >=7.0
- illuminate/support: >=7.0
Requires (Dev)
- mockery/mockery: ^1.4
- phpunit/phpunit: ^9.0
This package is auto-updated.
Last update: 2024-09-26 01:32:17 UTC
README
Bhekor开发的Laravel包,用于Geetest平台。它为Laravel提供了简单的Geetest使用方式。
Geetest演示:Geetest
安装
需要Laravel 7或更高版本。
此包现在支持Geetest 3.0。
要获取最新版本的Laravel Geetest,只需使用Composer要求项目
$ composer require bhekor/laravel-geetest
或者,您可以将以下内容添加到composer.json
文件中的require
键
"bhekor/laravel-geetest": "~1.0.0"
然后运行
composer update
您不必进行以下步骤,但如果需要。
接下来,您需要注册服务提供者。打开config/app.php
并在providers
键中添加以下内容
Bhekor\LaravelGeetest\GeetestServiceProvider::class
您还可以在config/app.php
的aliases
中注册Geetest Facade
'Geetest' => Bhekor\LaravelGeetest\Geetest::class
配置
要开始,您需要使用以下命令发布供应商资产
php artisan vendor:publish --tag=laravel-geetest
这将创建一个名为config/geetest.php
的配置文件,您可以配置geetest。
它还将生成一个名为resources/views/vendor/geetest
的视图文件夹,其中包含一个名为geetest.blade.php
的视图文件。在这里您可以配置geetest的样式。例如,您可以将脚本alert()
更改为您喜欢的。
用法
首先,您需要在Geetest注册。创建一个应用并获取ID
和KEY
。
例如。您可以在添加应用后在Geetest管理页面看到应用ID
和KEY
。
然后,在您的.env
文件中配置它们,因为您最好不要公开它们。
将它们添加到.env
中如下所示
GEETEST_ID=0f1097bef7xxxxxx9afdeced970c63e4
GEETEST_KEY=c070f0628xxxxxxe68e138b55c56fb3b
然后,您可以在视图中使用render()
,如下所示,它将渲染一个geetest代码验证码
{!! Geetest::render() !!}
例如,您可以在form
中使用它如下
<form action="/" method="post"> <input name="_token" type="hidden" value="{{ csrf_token() }}"> <input type="text" name="name" placeholder="name"> {!! Geetest::render() !!} <input type="submit" value="submit"> </form>
它将渲染成这样
当您点击submit
按钮时,它将验证Geetest代码。如果您没有完成验证,它将弹出一个文本并阻止表单提交。
或者,您可以设置其他样式的Geetest
{!! Geetest::render('float') !!} {!! Geetest::render('bind') !!} {!! Geetest::render('popup') !!} {!! Geetest::render('custom') !!}
然后它将在网站上以嵌入或弹出样式显示。默认为float
。
如果验证完成,表单将成功提交。
服务器验证
为什么Geetest是安全的?如果它只有前端客户端验证,我们能说它是完整的吗?它还有服务器验证以确保post请求是验证过的。
首先,我必须说您只能使用前端Geetest。但您也可以做一些简单的事情来实现服务器验证。
您可以使用$this->validate()
方法来实现服务器验证。以下是一个示例
use Illuminate\Http\Request; class BaseController extends Controller { /** * @param Request $request */ public function postValidate(Request $request) { $this->validate($request, [ 'geetest_challenge' => 'geetest', ], [ 'geetest' => config('geetest.server_fail_alert') ]); return true; } }
如果我们使用Geetest,表单将发布三个额外的参数geetest_challenge
geetest_validate
geetest_seccode
。Geetest使用这三个参数来实现服务器验证。
如果您使用ORM,我们不需要将这些键添加到Model中,因此您应该在Model中添加以下内容
protected $guarded = ['geetest_challenge', 'geetest_validate', 'geetest_seccode'];
您可以通过修改config/geetest.php
中的server_fail_alert
来定义警报文本
您还可以使用Request来实现验证
<?php namespace App\Http\Requests; use App\Http\Requests\Request; class ValidationRequest extends Request { /** * Determine if the user is authorized to make this request. * * @return bool */ public function authorize() { return true; } /** * Get the validation rules that apply to the request. * * @return array */ public function rules() { return [ 'geetest_challenge' => 'geetest' ]; } /** * Get validation messages. * * @return array */ public function messages() { return [ 'geetest' => 'Validation Failed' ]; } }
我们可以在Controller中通过Request参数使用它
use Illuminate\Support\Facades\Config; use Illuminate\Http\Request; use App\Http\Requests\ValidationRequest; class BaseController extends Controller { /** * @param Request $request */ public function postValidate(ValidationRequest $request) { // is Validate } }
选项
更改Ajax URL
如果您想更改Geetest的Ajax URL,您可以在config/geetest.php
中进行配置,根据需要更改url
,但此时您需要在您的routes.php
(Laravel 5.2或更早版本)或routes/web.php
(Laravel 5.3或更高版本)中添加额外的路由。并且您需要在您的控制器中添加一个triat。
例如,如果您添加此路由
Route::get('auth/geetest','Auth\AuthController@getGeetest');
您需要将Bhekor\LaravelGeetest\GeetestCaptcha
添加到您的AuthController
use Germey\Geetest\GeetestCaptcha; class AuthController extends Controller { use GeetestCaptcha; }
然后Ajax URL配置成功。
您还可以在其他控制器中使用此Trait,但需要在config/geetest.php
中配置url
。
在渲染时配置URL
此外,您可以通过以下方式设置Geetest Ajax URL
{!! Geetest::setGeetestUrl('/auth/geetest')->render() !!}
通过setGeetestUrl
方法,您可以设置Geetest Ajax URL。如果已配置,它将覆盖在config/geetest.php
中配置的url
。
配置警告消息
您可以通过在config/geetest.php
中配置client_fail_alert
和server_fail_alert
来配置警告消息。
配置语言
Geetest支持不同的语言
- 简体中文
- 繁体中文
- 英语
- 日语
- 韩语
您可以在config/geetest.php
中进行配置。
以下是语言配置的关键值
- zh-cn (简体中文)
- zh-tw (繁体中文)
- en (英语)
- ja (日语)
- ko (韩语)
例如,如果您想使用韩语,只需将lang
键更改为ko
'lang' => 'ko'
配置协议
您可以在config/geetest.php
中配置协议。
例如,如果您想使用https,只需将protocol
键更改为https
'protocol' => 'https'
配置默认产品
您可以在config/geetest.php
中配置默认产品。
例如,如果您想使用弹出式产品,只需将product
键更改为popup
'product' => 'popup'
请注意,它仅在您使用如下方式时才有效
{!! Geetest::render() !!}
如果您使用如下方式
{!! Geetest::render('bind') !!}
它将覆盖config/geetest.php
中的配置。
贡献
如果您发现此包中存在问题,您可以发送电子邮件至cqc@cuiqingcai.com
或者直接向此仓库发送pull request。
pull request非常受欢迎。
作者
Ibidapo Adeolu (Bhekor),来自尼日利亚
许可证
Laravel Geetest遵循MIT许可证(MIT)。