我正在使用带有“Tomcat 服务器”的 eclipse 开发一个 j2ee 应用程序,在该应用程序中,我想在我的登录页面上获取客户端系统的用户名,而不使用“LDAP”。
我已经使用过System.getenv("username"),但它给了我服务器系统的用户名,而不是客户端系统的用户名。
然后我使用了“request.getRemoteUser()”,但它给了我“NULL”值。 同时我也尝试“request.getUserPrincipal()”、“request.getAuthType()”。但这也给了我“NULL”的价值。当我探索它为什么给我'null'值时,我发现没有为应用程序定义身份验证级别。
因此,我将以下代码放在我的应用程序的 web.xml 中:
<security-constraint>
<web-resource-collection>
<web-resource-name>demo_trial_application</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>tomcat</role-name>
</auth-constraint>
<user-data-constraint>
<transport-guarantee>NONE</transport-guarantee>
</user-data-constraint>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
</login-config>
在 web.xml 中修改后(就像上面一样),当我通过 URL 执行我的应用程序时,会打开一个对话框并提示输入我在 tomcat-users.xml 中声明的 tomcat-user 的用户名和密码。结果它显示我'tomcat'作为用户名。
因此通过上述过程,我没有得到客户端系统的用户名。
现在,除了服务器端,我还尝试了 javascript 代码来获取客户端系统的用户名,如下代码:
var winNetwork=new ActiveXObject("WScript.Network");
alert("User Name :"+winNetwork.UserName);
或者
var winShell=new ActiveXObject("WScript.Shell");
alert(winShell.ExpandEnvironmentStrings("%USERNAME%"));
但上面的代码只适用于 Internet Explorer,因为我使用了“ActiveXObject”,它只适用于 Internet Explorer。因此上面的 javascript 代码引发了浏览器兼容性问题。
那么请您告诉我“如何通过 Java 或 Javascript 访问客户端系统的用户名? ”,但我不想为此使用 'LDAP'。