在localhost上唯一识别客户端

时间:2016-09-30 17:23:49

标签: javascript php apache google-chrome

我在没有连接到互联网的Windows笔记本电脑上安装了apache。笔记本电脑有多个用户帐户。让我们说两个用户帐户是" Adam"和"莎莉"。我在localhost上有一个项目需要通过Chrome浏览器区分不同的Window用户。

我知道直接通过浏览器检测用户名是一个严重的安全沙箱漏洞,但我不在乎:我完全控制了计算机并且项目无法通过Web访问,因此没有安全问题。我愿意以任何可以想象的方式作弊,包括建立一个自定义.exe来帮助。我只需要区分不同的帐户。它不需要通过用户名,但任何替代ID都需要为该给定用户保留。

我想在盒子外面思考。

如何创建一个我可以在Chrome中打开的页面,该页面会说" Hi Adam"或者"嗨莎莉"甚至"嗨 - = [GUID] = - "没有访客输入他们的名字/ guid。

3 个答案:

答案 0 :(得分:2)

您可能应该使用NW.jsElectron之类的内容而不是Chrome,这样您就不必牺牲安全性。

这是我运行nw.js sdk并加载演示页面的图片,显示开发工具并检索我的用户名。 picture of NW.js development console 挺直的。遵循节点文档并做任何你喜欢的事情。

您可以通过HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run中的任务计划程序或注册表或执行类似echo setCurrentUser("%USERNAME%"); > c:\your_project_directory\set-current-user.js的本地组策略获得batch file that runs on startup,然后您只需要一个定义<script>function setCurrentUser(s) { alert("Hello "+s); /* ... */ }</script>的脚本然后是像<script src="set-current-user.js"></script>

这样的脚本导入

如果您只想在文件系统中执行任何操作,请将启动Chrome的快捷方式更改为--allow-file-access-from-files --user-data-dir=c:\your_project_directory --disable-web-security并重新启动PC(或者只删除所有chrome.exe进程,包括后台)。

编辑:更新了有关使用Pritam Banerjee的--allow-file-access-from-files的注释。如果你走那条路,他就会得到荣誉。 :)

如果你对尝试NW.js感兴趣,这里有一个完整的例子:
example package.json example index.html

package.json

{
  "name": "nw-hello-user",
  "version": "0.0.1",
  "main": "index.html"
}

index.html

<!DOCTYPE html>
<html>
<head>
<title>Hello!</title>
</head>
<body>
    Hello <script>document.write(process.env.USERNAME)</script>!
</body>
</html>

这是命令行:
example command line

这是最终产品!
example screenshot

答案 1 :(得分:1)

由于您使用PHP标记了您的问题,您只需创建一个index.php文件,其中包含以下内容:

Hi <?= getenv("USERNAME") ?>

getenv("USERNAME")返回USERNAME环境变量的值。

更新:感谢TylerY86提供更正确的方式来获取用户名。另请注意以下评论:

  

您还必须确保Apache实例正在运行   用户的上下文,而不是服务。如果你试试这个例子,如果   你会得到像SYSTEM或IUSR_MACHINE而不是用户的东西   名字,你需要调整。

答案 2 :(得分:0)

据我所知,你有2个选择。

1)您可能会要求用户在第一次使用页面时识别自己并将其存储到本地存储中。由于这些是机器上的不同用户,因此他们的localStorage应该是分开的。

2)您可以在本地主机上部署一个小型Web服务,该服务从系统获取用户凭据并在GET请求中返回。