我正在研究 asp.net 应用程序。
我必须开发一个功能,系统管理员应该能够发送邀请以通过电子邮件查看用户特定文档。当用户点击邀请时,系统应该能够识别用户并打开文档。
我正在考虑对每封电子邮件使用 16 位哈希密钥,并在管理员发送邀请时将它们存储在数据库中。当用户点击使用 16 位哈希键检索用户详细信息的邀请时。
但我觉得可能有更好的方法来做到这一点。
请建议我以更好的方式实现该功能。
我正在研究 asp.net 应用程序。
我必须开发一个功能,系统管理员应该能够发送邀请以通过电子邮件查看用户特定文档。当用户点击邀请时,系统应该能够识别用户并打开文档。
我正在考虑对每封电子邮件使用 16 位哈希密钥,并在管理员发送邀请时将它们存储在数据库中。当用户点击使用 16 位哈希键检索用户详细信息的邀请时。
但我觉得可能有更好的方法来做到这一点。
请建议我以更好的方式实现该功能。
在数据库中创建一个表,其中包含
UserDocuments { UserKey, DocumentKey, GUID, IsRead (false by default)}
在此表中存储用户和文档密钥关系。
生成随机公钥 (GUID) 并将此密钥存储在此表中,并使用电子邮件、邮件、电话或任何直接安全的方式将相同的密钥发送给用户。
让文档页面在查询字符串中包含 DocumentKey。
当用户打开文档页面时,根据表中的 DocumentKey、UserKey 对用户进行身份验证。
如果 IsRead 为假,则不允许。
如果身份验证成功,请他们输入 GUID。
如果用户 ID 有效,则再次检查数据库,如果是,则打开文档并将 IsRead 标记为 true。
如果您的用户通常必须登录,您可能还希望在打开文档(或回答其他问题)之前单击电子邮件中的链接后强制他们登录,尤其是在文档本质上是敏感的情况下。至少您应该在他们打开文档后或经过一段时间后禁用该密钥。
电子邮件帐户一直被黑客入侵,您不希望攻击者能够单击同一链接并访问任何敏感数据。