ubeeqo / laravel-sift
Laravel 5 对 Sift Science 的包装
Requires
- illuminate/contracts: 5.1.*|5.2.*|5.3.*|5.4.*
- illuminate/support: 5.1.*|5.2.*|5.3.*|5.4.*
- siftscience/sift-php: 1.*
This package is not auto-updated.
Last update: 2024-09-15 03:13:49 UTC
README
一个用于 Laravel 5 和 Sift Science 的包装。
安装
使用 Composer 安装此包
composer require ubeeqo/laravel-sift
接下来,将以下内容添加到 config/app.php 文件中的 providers 数组
ubeeqo\LaravelSift\SiftServiceProvider::class,
通过在 config/app.php 文件中的 aliases 数组中添加以下行来注册外观
'SiftScience' => ubeeqo\LaravelSift\Facades\SiftScience::class,
配置
您可以使用以下 artisan 命令发布配置文件
php artisan vendor:publish --provider="ubeeqo\LaravelSift\SiftServiceProvider"
默认配置文件将检查 .env 文件中的 SIFT_API_KEY 和 SIFT_JAVASCRIPT_KEY
用法
JavaScript 片段
要将 JavaScript 片段添加到您的页面中,请立即在主 blade 模板的 opening body 标签之后包含以下行
@include('sift::snippet')
这将使用会话 ID 以及当用户认证时用户的电子邮件来跟踪用户与您的网站的互动。有关 JavaScript 片段的更多信息,请参阅 Sift Science 文档。
自定义 Sift 用户 ID
默认情况下,该包使用 getAuthIdentifier() 方法来获取用户在跟踪认证事件时的标识符(通常是用户 ID)。您可以通过向用户模型添加一个返回您想要跟踪的值的 getSiftId() 方法来自定义此值。如果您不想公开用户 ID(此值在 JavaScript 片段中可见)或要使用其他值,这将很有用。请注意,使用电子邮件地址(或任何可能更改的值)可能不是好主意,因为如果值更改,您将失去在 Sift 中对用户的引用。
建议在报告您自己的事件时使用 SiftScience::getUserId($user) 来获取用户的 Sift ID,因为这 internally 使用的方法。可选的 $user 参数默认为当前认证的用户。它当前使用之前提到的 getSiftId() 方法的值,并将回退到 getAuthIdentifier()。
如果您正在自定义标识符,请注意,如果您将来更改它,Sift 中将创建另一个用户,并且他们的评分可能会受到影响。同时,请确保查看 允许的字符。
跟踪事件
默认情况下,该包跟踪成功和失败的登录以及注销,但您可能希望跟踪其他操作,如交易。
要跟踪事件,您需要与 SiftClient 类交互,如下所示
// Import the facade use SiftScience; // Returns the SiftClient class SiftScience::client(); // Track an event SiftScience::client()->track('$transaction', [ '$user_id' => SiftScience::getUserId(), '$amount' => 1000000, '$currency_code' => 'USD', '$user_email' => $user->email, '$transaction_type' => '$sale', '$transaction_status' => '$success', '$session_id' => SiftScience::getSessionId(), ]);
在上面的示例中,您会注意到 SiftScience::getSessionId()。这使用键 'sift_session_id' 从当前会话中获取标识符。您还可以传递一个会话存储作为参数,用于存在当前会话的情况(如队列)。
有关如何使用 SiftClient 类的更多信息,请参阅 sift-php 文档 和 事件 API 参考。
队列
您可能想使用队列来跟踪某些事件,以避免减慢应用程序的运行。内置的认证事件跟踪支持使用队列,但截至现在,您必须自己实现队列。欢迎提出将队列支持直接添加到本包中的优雅方案的建议。