0

我的目标是能够生成一个特殊的 URL,允许某人暂时查看通常“受保护”的视图。事实上,如果他们离开该页面,任何授予的临时身份验证都应该被取消。

基本上问题是我的网站上有我通常希望通过要求登录来保护的内容。但是,我希望能够临时访问特定资产而不需要登录。

我是否应该以某种方式使用带有自动验证用户身份的查询字符串的 URL?或者我应该使用根本不需要身份验证的资产生成一个单独的页面?

编辑:我忘了提到生成的链接应该可供多人访问。换句话说,它不能限制访问的次数,而是一个时间段或直到我们手动强制它过期。

4

2 回答 2

0

vyce:“它应该首先用于还包含 PDF 文件的渲染视图。

如果您在 webroot 下可以访问 PDF 文件(或任何其他文件),任何人都可以随时访问它们。因此,即使您只向用户提供一次视图,如果他们保留了 PDF 的 URL,他/她仍然可以访问 PDF 文件。用户还可以与其他人共享该 URL。

这个问题可以通过以下方式解决:

    • 将 PDF 文件存储在文档根目录下(或使用 无法访问的其他位置.htaccess
于 2013-06-12T13:07:44.737 回答
0

您可以创建一个类似的数据库表tokens,在其中存储仅对 1 个单个请求有效的唯一访问令牌。在您的操作中,此令牌可以是 URL 参数。如果 URL 中不存在令牌,或者在 DB 表中找不到令牌,则拒绝访问。如果找到令牌,则将其从数据库中删除并执行操作。

现在,每当您想授予某人这种一次性访问权限时,您都可以创建这样的令牌并将其存储到 DB。令牌可以是一个随机的 MD5 哈希,您可以通过md5(mt_rand().mt_rand()). 然后,您可以使用该令牌作为参数创建一个 URL 并将其分发给用户。

您还可以增强系统并向您的tokens表添加过期时间。然后,如果到期时间在未来,您只会授予访问权限。

于 2013-06-12T06:41:28.200 回答