2015-08-08 44 views

回答

0

您可以通过实现Kerberos或NTML身份验证,那么你可以得到使用request.getRemoteUser()

我推荐的Kerberos的Windows用户名达到您的要求。要添加Kerberos身份验证,请检查SPNEGO Filter。它在大多数Servlet容器上。

1

一般互联网客户端的简短答案是,你不能。 Web服务器不会从客户端的Web浏览器获取任何信息以允许其查看用户名(这样做会造成安全问题)。

运行在用户浏览器上的Javascript也无法计算出用户名。这可能是使用浏览器扩展的可能性,但这是一种超越简单解决方案的公平方式,可以很好地进入“糟糕的想法”领域。

如果你正在做内部网的东西,你的用户在同一个域或网络上,你可以尝试让服务器进行系统调用或使用本地操作系统工具来查明。例如:

wmic.exe /node:192.168.33.2 ComputerSystem Get UserName 

注意这样的事情只会工作,如果你有权限(如域管理员可能)来查询其他机器。对于一般的互联网资料,这根本不起作用。

最终,只有当您的Web服务器和客户机共享相同的身份验证机制(例如samba,NTLM,Kerberos等)时才能实现。

相关问题