我有一个用于销售教学视频的移动应用程序。
我需要生成一个唯一的一次性下载链接,以将其显示在我的应用程序中。
该应用程序基于API,并且我正在使用Laravel后端框架。我保存了所有从android发送的设备ID。
如何为每个用户购买的任何设备的产品生成链接?
答案 0 :(得分:1)
您可以使用“签名URL”(Laravel> = 5.6)。这些URL附加了“签名”哈希。下一个方法创建一个签名的URL
URL::signedRoute('video.download', ['user_id' => 1, 'video_id'=1]);
如果您想生成一个过期的临时签名路由URL,则可以使用secondarySignedRoute方法:
URL::temporarySignedRoute(
'unsubscribe', now()->addMinutes(30), ['user' => 1]
);
答案 1 :(得分:0)
为每个用户设置unique key
,并在下载时随请求发送密钥。
当用户请求产品时,请检查密钥是否已经存在,并检查密钥belongs to
是否是用户。
答案 2 :(得分:0)
您可以为每个使用购买的应用程序生成唯一令牌。
$token = sha1(uniqid(time(), true));
有下载请求时,您可以销毁
$url = "http://example.com/activate.php?token=$token";
您可以检查相应用户的令牌并执行所需的操作。
谢谢
答案 3 :(得分:0)
如果您不想自己进行设置,我提供了一个小包装,可帮助您创建使用寿命有限且点击次数有限的签名URL。
https://github.com/linkeys-app/signed-url/
这将为您提供比laravel提供的内置签名URL更多的功能,因为您可以设置过期前对链接的点击次数。在这种情况下,您只需要使用:
Link::generate('myurl.com/download', ['user' => 1, 'video' => 5], null, 1);
这将允许您将数据附加到链接,不给它指定有效日期(尽管将有效日期传递给第三个参数将使链接在给定的时间到期),并且仅允许单击一次,直到该链接到期。 / p>