eighteenplus/agegateway

18+ 年龄网关,适用于成人网站

dev-master 2019-06-21 06:17 UTC

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+产品和服务的相关事宜。如果您不希望我们这样做,请在发送电子邮件时告知我们。