web-applications - 如何允许一次性使用 Web 应用程序?
问题描述
我正在寻找一种允许用户使用我的应用程序一次的方法。原因是因为我正在做一个测验,我不希望人们第二次做测验并在我的数据库中输入另一个条目。我正在使用 React、Express 和 postgresql。
我正在考虑通过IP地址限制用户。但问题在于存在动态IP。另一个想法是从 google、facebook 注册并为每个用户创建一个密钥。问题在于人们可以创建另一封电子邮件。但这可能是最好的解决方案。
也许你们有更好的想法。你知道怎么做吗?
解决方案
这是一个很难解决的问题,需要权衡取舍。您的保护越强大,您必须在用户面前设置的障碍就越多。
有一些常见的解决方案。
IP 地址- 对用户没有障碍,但非常不可靠 - 大多数 ISP 为同一用户分配不同的 IP 地址以进行不同的浏览会话。
Cookies - 您可以在用户完成测验后在浏览器上放置一个 cookie。对用户没有障碍,但通过删除 cookie 很容易绕过,并且用户可以使用不同的设备。
登录/注册方案- 您可以要求用户在完成测验之前进行身份验证,并验证他们的电子邮件地址或电话号码。这给用户造成了障碍——并非所有人都愿意这样做。通过使用多个电子邮件地址和刻录机电话轻松规避。
第 3 方身份验证- 您可以要求用户使用第 3 方身份提供者进行身份验证。像 Facebook 这样的网站非常擅长清除虚假资料。这将在用户面前设置一个额外的障碍 - 不是每个人都有 Facebook 个人资料,或者希望你知道它。规避起来相当棘手,只要您只允许一个第 3 方身份提供者,并且他们有一个很好的“无虚假资料”政策。
强身份验证- 需要明确的、经过验证的身份的应用程序使用强身份验证。示例包括网上银行和(在英国)纳税申报。这些申请通常需要提交一些其他身份证明,例如您的护照照片。对用户来说是一个巨大的障碍,而且只对必备应用程序真正可行。
推荐阅读
- python-3.x - 我正在尝试从 python 中的命令行提示构建一个字符串,但是我无法从它的列表中删除值
- python - 如何遍历熊猫数据框中的字符串并删除不需要的单词?
- python - 在 pycharm 中,当我尝试访问 googlesheet 时显示以下错误。请我的代码和错误
- discord.js - Discord.js - Discord 机器人停止响应命令
- java - 从 Java 中的字节数组(例如 parquet 文件的内容,例如 example.parquet)中提取 Parquet 模式?
- java - 带有 GridBagLayout 的 JPanel 大小不正确
- c - 如何通过用指针填充指针数组来操作指针数组?
- ios - SwiftUI LazyVStack 重叠图像
- width - 横幅图像未按预期显示整个屏幕
- pdf - 我可以使用 Apple Cups 保留 PDF 中的可填写字段吗?