我的目标是能够生成一个特殊的URL,允许某人临时查看正常的“受保护”视图。实际上,如果他们离开页面,则应该删除任何已授予的临时身份验证。
基本上问题是我的网站上有内容,我通常希望通过登录来保护。但是,我希望能够临时访问特定资产而不需要登录。
我是否应该以某种方式使用带有查询字符串的URL来自动验证用户?或者我应该使用不需要身份验证的资产生成单独的页面?
编辑:我忘了提到生成的链接应该可以访问多个人。换句话说,它不能限制访问的次数,而是一个时间段或直到我们手动强制它到期。
答案 0 :(得分:0)
您可以创建一个数据库表,如tokens
,您可以在其中存储唯一的访问令牌,这些令牌仅对单个请求有效。在您的操作中,此标记可以是URL参数。如果URL中没有令牌,或者如果在DB表中找不到令牌,则拒绝访问。如果找到了令牌,则将其从DB中删除并执行操作。
现在,只要您想给某人这种一次性访问权限,就可以创建这样的令牌并将其存储到DB中。令牌可以是随机MD5哈希,您可以生成例如通过md5(mt_rand().mt_rand())
。然后,您可以使用该标记创建一个URL作为参数,并将其交给用户。
您还可以增强系统并为tokens
表添加到期时间。然后,如果过期时间是将来,您只能授予访问权限。
答案 1 :(得分:0)
vyce:“首先应该是一个包含PDF文件的渲染视图。”
如果您的webroot下有PDF文件(或任何其他文件),任何人都可以随时访问它们。因此,即使您只为用户提供一次视图,如果他们保留了PDF的URL,他/她仍然可以访问PDF文件。用户还可以与其他人共享该URL。
可以通过以下方法解决此问题:
.htaccess
无法访问的其他位置)