0

我正在使用带有“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'。

4

1 回答 1

0

你不能。出于安全原因,您在浏览器中访问的 Web 应用程序将无法访问有关客户端计算机的此类信息。您可以坚持使用 IE 并使用 ActiveX,要求用户给您用户名,或者拥有自己的身份验证来识别用户。

于 2013-10-16T12:07:06.147 回答