Python:如何获取查看页面的Windows用户名?

5 投票
1 回答
6893 浏览
提问于 2025-04-16 12:49

有没有办法在Python/Django中获取当前登录的Windows用户的用户名,前提是这个应用不是在本地运行的?

更新:抱歉,我想澄清一下,我指的是查看网页的用户的Windows用户名,而不是运行服务器的用户。

我试过这两种方法:

 current_user = os.environ.get("USERNAME")
 current_user_getpass = getpass.getuser()

但我觉得它们返回的是运行服务器的用户的名字。

谢谢!

进一步更新:我对安全性不是特别在意。用户假装成其他用户名对我来说没什么影响。重要的是方便。我只需要一种方法来获取用户名,而不需要用户去折腾密码或者安装客户端软件。有什么想法吗?

1 个回答

2

有三种方法,但都不太好用。

  1. 使用 Ident (AUTH) 协议。从技术上讲,这个协议可以跨平台使用。

    ...不过,实际上在Windows上根本没有能返回真实用户名的Ident服务器,只有一个固定的字符串。

    补充:显然 Retina Scan Identd 可以做到这一点。(太棒了。)

  2. 要求使用HTTP NTLMNegotiate 认证。这样你能得到的不仅仅是用户名的检查,

    ...但是NTLM不安全,只有Internet Explorer和Firefox支持它,而且默认情况下它只在局域网(内网)中使用。Negotiate可以使用更安全的Kerberos,但显然需要服务器和客户端都支持Kerberos。如果Windows电脑在一个域里,那就好。如果不在……

  3. 如果你 控制所有客户端机器,可以使用简单的SSL客户端证书认证。这在所有现代浏览器中都能用。

    ...但每个用户都需要自己的证书。创建一个内部使用的CA并发放证书很简单;但在客户端机器上安装和配置这些证书就没那么容易了。

撰写回答