eighteenplus / agegateway
18+ 年龄网关,适用于成人网站
Requires
- php: >=5.6
- firebase/php-jwt: ^5.0
- jaybizzle/crawler-detect: ^1.2
- jucksearm/php-barcode: ^1.0
- mobiledetect/mobiledetectlib: ^2.8
Requires (Dev)
- phpunit/phpunit: 3.7.*
This package is auto-updated.
Last update: 2024-09-22 00:51:11 UTC
README
欢迎使用PHP的18+年龄网关。此仓库包含您将UK合规的18+年龄验证工具集成到Go后端所需的代码,以便您的英国访客能够以安全且匿名的方式确认他们18岁或以上。
有关英国年龄要求更多信息,请访问 https://www.ageverificationregulator.com
18+年龄网关和验证工具免费提供,由 https://18plus.org 提供
组件
此存储库包含三个组件,以构建您的年龄网关
- 年龄网关模块,如果您网站没有其他年龄网关,则应使用它来拦截对您网站的请求。
- ReallyMe年龄验证模块,为您的访客提供一种免费且匿名的方式,以证明他们达到最低年龄要求
- 18+ Pass模块,为您的访客提供加密VPN解决方案,以进行私密浏览。如果您包含18+ Pass联盟链接,您将从AgeGate的任何销售中获得补偿。有关更多详细信息,请访问 https://18plus.org/affiliates。
如果您已经有一个年龄认证拦截器,您可以向现有工具添加ReallyMe年龄验证模块和18+ Pass模块。
概述 - 年龄验证是如何工作的
当英国访客访问您的网站时,会显示年龄验证要求。通过选择ReallyMe年龄验证选项,访客将能够以安全且匿名的方式向您提供他们18岁以上的保证。ReallyMe提供免费iOS和Android应用程序,用户可以通过该应用程序验证其身份。然后,用户可以匿名地向您的网站分享他们是18岁以上的事实,既您的网站也不了解用户的身份或他们访问的具体网站。
该过程如下:当访客点击年龄网关上的ReallyMe年龄验证按钮时,他们将看到一个二维码或deeplink。通过使用手机扫描此二维码或点击此deeplink,手机上的ReallyMe应用程序将打开,并显示同意请求。deeplink包含一个唯一的AgeVerificationID,可以是您使用SDK生成的随机字符串,会话ID,或者通过连接用户的IP地址和访问时间的UTC。deeplink还包含一个回调URL。
当用户同意与您的网站分享他们是18岁以上的事实时,ReallyMe应用程序将从Really.Me请求AgeVerificationID的签名版本。如果用户年龄超过18岁,ReallyMe将使用其私钥对AgeVerificationID进行签名,并向用户颁发jwt。然后,用户的app将把签名的jwt传输到您的服务器URL端点。
您的服务器将解码jwt,将到期时间和日期与当前UTC进行比较,并通过将签名与存储在您的服务器上的ReallyMe公共签名密钥进行比较来确保签名的有效性。
为了获得最佳的用户体验,访问者的浏览器应继续调用您的服务器以刷新会话。通过这种方式,一旦会话通过您的服务器接收带有AgeVerificationID的签名jwt进行验证后,AgeGate应自动关闭。如果您希望要求用户点击“下一步”按钮,您可以添加此功能。
最后,一个cookie与访问者一起存储,以防止他在一段时间内重新确认年龄。谨慎的做法是在会话结束时过期cookie。
要求
版本
安装
对于Laravel
在composer.json中添加此包并更新composer。这将下载包。
composer require 18plus/agegate
使用方法
首先,验证访问者是否来自英国或检查是否已验证。如果访问者来自英国,则显示AgeGate。
if(AgeGate::isVerified() || !AgeGate::GbIPCheck()){
return redirect('/home');
}
return AgeGate::view('', '/home');
AgeGate::view()函数有三个参数 - 1:您的成人网站标志文件URL,2:当AgeGate关闭时将去的路由,3:AgeGate签署后返回的路由。如果您不设置第三个参数,它将返回到'/AgeVerifyResult'路由,然后您必须定义'/AgeVerifyResult'之后的路由和操作。
对于Laravel
In routes/web.php
Route::any('/AgeVerifyResult', "EighteenPlusController@verify");
...
In EighteenPlusController.php / EighteenPlusController class
...
public function verify(Request $request){
return EighteenPlus\AgeGate\AgeGate::verify($request->jwt);
}
对于Symfony
In config/routes.php
return function (RoutingConfigurator $routes) {
...
$routes->add('AgeVerifyResult', '/AgeVerifyResult')
->controller([EighteenPlusController::class, 'verify']);
...
};
...
In EighteenPlusController.php / EighteenPlusController class
...
public function verify(Request $request){
return EighteenPlus\AgeGate\AgeGate::verify($request->request->jwt);
}
对于CodeIgniter
In config/routes.php
...
$route['AgeVerifyResult'] = 'AgeVerifyResult';
...
In controllers/AgeVerifyResult.php
...
class AgeVerifyResult extends CI_Controller {
public function index(){
return EighteenPlus\AgeGate\AgeGate::verify($this->input->post('jwt'));
}
}
对于Zend
In module.config.php
...
'router' => array(
'routes' => array(
'album' => array(
'type' => 'segment',
'options' => array(
'route' => '/AgeVerifyResult',
'defaults' => array(
'controller' => 'AgeVerifyResult\Controller\AgeVerifyResult',
'action' => 'index',
),
),
),
),
),
...
In class AgeVerifyResultController
...
class AgeVerifyResultController extends AbstractActionController {
public function index(){
return EighteenPlus\AgeGate\AgeGate::verify($this->input->post('jwt'));
}
}
配置
支持
对于任何问题或支持,请发送电子邮件至 sdksupport@18plus.org。一旦我们回答了您的问题,我们可能会再次联系您讨论18+产品和服务的相关事宜。如果您不希望我们这样做,请在发送电子邮件时告知我们。