18plus/agegate

18+ 成人网站年龄门

dev-master 2019-05-17 12:24 UTC

This package is not auto-updated.

Last update: 2024-09-26 19:17:03 UTC


README

欢迎使用PHP的18+年龄门。此仓库包含您将UK符合年龄18+年龄验证工具集成到您的Go后端所需的所有代码,以便您的英国访客可以以安全且匿名的方式确认他们年龄为18岁或以上。

有关英国年龄要求的更多信息,请访问https://www.ageverificationregulator.com

18+年龄门和验证工具是免费提供的,由https://18plus.org

组件

该仓库包含三个组件来构建您的年龄门:

  • 年龄门模块,如果您的网站没有其他年龄门,则应使用该模块来拦截对您网站的请求。
  • ReallyMe年龄验证模块,为您的访客提供一种免费且匿名的方式,以证明他们满足最低年龄要求。
  • 18+ Pass模块,为您的访客提供加密VPN解决方案以进行私密浏览。如果您包括您的18+ Pass联盟链接,您将从AgeGate的任何销售中获得18+的补偿。有关更多信息,请访问https://18plus.org/affiliates

如果您已经有一个年龄认证拦截器,您可以向现有工具添加ReallyMe年龄验证模块和18+ Pass模块。

概述 - 年龄验证如何工作

当英国访客访问您的网站时,会显示年龄验证要求。通过选择ReallyMe年龄验证选项,访客将能够安全且匿名地向您提供他们年龄为18+的保证。ReallyMe提供免费的iOS和Android应用程序,用户可以通过该应用程序验证其身份。然后,用户可以匿名地与您的网站共享他们年龄为18+的事实,在此过程中,您的网站和ReallyMe都不知道用户的身份或他们要访问的特定网站。

该过程如下:当访客在年龄门上点击ReallyMe年龄验证按钮时,他们会看到一个二维码或deeplink。通过使用手机扫描此二维码或点击此deeplink,手机上的ReallyMe应用程序会打开,用户会看到一个同意请求。deeplink包含一个唯一的AgeVerificationID,可以是您使用SDK生成的随机字符串,会话ID,或者通过连接用户的IP地址和访问时间UTC。deeplink还包含一个回调URL。

当用户同意与您的网站共享他们年龄为18+的事实时,ReallyMe应用程序会从Really.Me请求AgeVerificationID的签名版本。如果用户年龄超过18岁,ReallyMe将使用其私钥对AgeVerificationID进行签名,并向用户颁发jwt。然后,用户的应用程序会将此签名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:您的成人网站logo文件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+产品和服务的细节。如果您希望我们不这样做,请在您发电子邮件时告知我们。