【问题标题】:How do I lock a web app's functionality to certain computers/devices?如何将 Web 应用程序的功能锁定到某些计算机/设备?
【发布时间】:2017-02-21 04:09:11
【问题描述】:

我为一家药房使用 PHP、mySQL、javascript 和 jQuery 编写了一个送货网络应用程序,他们可以在其中在计算机上输入送货内容,然后出去进行实际送货,并让客户在司机的手机上签名手指。我现在正在将新功能集成到该站点中,以跟踪每位员工的工作时间,方法是允许他们登录并单击“打卡”,然后在轮班结束时单击“打卡”。我现在遇到的问题是,我们不希望员工能够在家“打卡”或“打卡”,但我们仍然需要他们能够从任何地方访问该站点以捕获签名交货。

我想到了几个解决方案,但似乎没有办法实现它们。我的解决方案:

  1. 通过单击将文件保存到离散位置的按钮,允许管理员帐户“激活打卡/打卡功能”。当非管理员帐户在该计算机上使用该网站时,该网站会找到此文件,并允许他们打卡。这似乎是 javascript 的安全问题,不可行。
  2. 允许管理员帐户通过单击一个按钮来“激活打卡/打卡功能”,该按钮将记录该机器的一些唯一标识符并将其保存到数据库中。当非管理员登录时,该站点将检查数据库中的该值并将其与机器的值进行比较,以授予对“打卡/打卡”功能的访问权限。

我认为人们最常用的解决方案是 IP 地址,但我认为这行不通,因为 Pharmacy 具有动态 IP。

有谁知道如何使我的两个解决方案中的任何一个起作用,或者有不同的想法来获得相同的结果?

如果这里不适合发布此类问题,有人可以建议我在其他地方发布吗?

【问题讨论】:

  • 您正在寻找 cookie。 (或者,如果你想花哨的话,客户端证书)
  • 我认为 Cookie 太临时了。通过清除浏览历史等很容易将它们删除。客户端证书可能是答案...

标签: javascript jquery web-applications


【解决方案1】:

您可以使用 HTML5 地理位置来查看它们是否真的在药房内。员工的设备是否支持这个你必须检查,但是有一个 HTML5 API

navigator.geolocation.getCurrentPosition(function (result) {
    console.log("Lat: " + result.latitude + " Long:" + result.longitude);
});

另一种选择是在药房张贴每日更改的进出时钟密码。员工必须到药房看看才能打卡。

另一个也许是最简单的选择就是在药房配备一台传统的打卡/打卡机;)

【讨论】:

  • 地理位置可能已经足够好了。不是我的想法,但如果一切都失败了,那可能会奏效。发布每日密码会起作用,但我知道经理们会懒得这样做。而且物理机是不可能的哈哈
  • 如果你让他们用手机扫描其中一种产品的条形码怎么办?我不确定,但我假设这里的“打卡”是交货的开始。
  • 不,如果你愿意的话,它们实际上是两个不同的“模块”。这只是为了记录他们为工资工作了多少小时。我可能会想出一个带有条形码的解决方案,这是个好主意,但我已经有一个交付程序 (VB),它会导致一些问题(这就是我创建这个模块的原因),所以它们被更多地使用到电脑前登录。
【解决方案2】:

显然,您可以使用 HTML5 Web 存储或本地存储将信息保存到用户的浏览器。它就像一个 cookie,除了在浏览器关闭或计算机关闭时不会过期或被清除。我在想,如果我像原来的计划一样使用它,它会起作用。唯一的缺点是如果用户清除了他们的浏览器历史记录,这将被清除。我认为这将是较小的弊端,因为我认为药房永远不会清除他们的浏览器历史记录。

https://www.w3schools.com/html/html5_webstorage.asp

如果/当我决定采用这个解决方案时,我会检查这个答案,看起来我可能会这样做。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-11
    • 2017-05-15
    • 1970-01-01
    • 2020-05-27
    • 1970-01-01
    • 1970-01-01
    • 2016-12-19
    • 1970-01-01
    相关资源
    最近更新 更多