你可以抓用户的机器名来判断request.getRemoteHost()

解决方案 »

  1.   


    可是我想通过抓域帐号的名称来判断,而且我发现人家用.net能实现,我想用JAVA也能实现。
      

  2.   

    这个可以配置的,属于权限认证这块,你可以将域的认证和项目认证集成,一般情况下可以在jboss中配置,但这个jboss可能需要安装在域管理服务器上,或者有个什么连接,具体的你查下google吧
      

  3.   

    .NET做不到,除非安装客户端插件。JAVA自身可以用如下代码获得
        Map<String, String> map = System.getenv();
        String userName = map.get("USERNAME");// 获取用户名
        String computerName = map.get("COMPUTERNAME");// 获取计算机名
        String userDomain = map.get("USERDOMAIN");// 获取计算机域名
        System.out.println(userName);
        System.out.println(computerName);
        System.out.println(userDomain);
    http://www.java2000.net/p3928可是浏览器里面是不能运行这些东西的。没办法。比如我用Firefox.hehe!
      

  4.   

    可以的,你看tomcat的管理界面需要输入一个用户名/密码,这个可以配置成机器的用户名/密码,其实和你的需求是一样的。
    不需要程序去获取乱七八糟的东西
      

  5.   

    你也没必要去抓取,应该是web服务器自动去匹配,然后按照JAAS标准去取用户名
      

  6.   

    LZ就用applet抓取客户端信息比较好
      

  7.   

    用如下代码:String auth = request.getHeader("Authorization");
    if (auth == null)
    {
      response.setStatus(response.SC_UNAUTHORIZED);
      response.setHeader("WWW-Authenticate", "NTLM");
      response.flushBuffer();
      return;
    }
    if (auth.startsWith("NTLM "))
    {
      byte[] msg = new sun.misc.BASE64Decoder().decodeBuffer(auth.substring(5));
      int off = 0, length, offset;
      if (msg[8] == 1)
      {
        byte z = 0;
        byte[] msg1 = {(byte)'N', (byte)'T', (byte)'L', (byte)'M', (byte)'S', (byte)'S', (byte)'P', 
          z,(byte)2, z, z, z, z, z, z, z,(byte)40, z, z, z, 
          (byte)1, (byte)130, z, z,z, (byte)2, (byte)2,
          (byte)2, z, z, z, z, z, z, z, z, z, z, z, z};
        response.setHeader("WWW-Authenticate", "NTLM " + 
           new sun.misc.BASE64Encoder().encodeBuffer(msg1));
        response.sendError(response.SC_UNAUTHORIZED);
        return;
      }
      else if (msg[8] == 3)
      {
        off = 30;    length = msg[off+17]*256 + msg[off+16];
        offset = msg[off+19]*256 + msg[off+18];
        String remoteHost = new String(msg, offset, length);    length = msg[off+1]*256 + msg[off];
        offset = msg[off+3]*256 + msg[off+2];
        String domain = new String(msg, offset, length);    length = msg[off+9]*256 + msg[off+8];
        offset = msg[off+11]*256 + msg[off+10];
        String username = new String(msg, offset, length);    out.println("Username:"+username+"<BR>");
        out.println("RemoteHost:"+remoteHost+"<BR>");
        out.println("Domain:"+domain+"<BR>");
      }
    }