Adr*_* Be 3 javascript java windows jquery jsp
我想获取浏览我的网页的用户的Windows用户名(这是针对Intranet的)。这必须在IE8,Chrome和Firefox上都可以使用(Safari会更好)。
我遇到了这个Java解决方案:
http://www.ioplex.com/:Jespa-Java Active Directory集成
但这是一个专有软件库,即使它们提供的示例在我的Web应用程序上也不起作用,因为我们没有使用Apache Web服务器。
如果有人得到一些帮助,Java解决方案将是理想的选择?
javascript中似乎有某种解决方案: 如何在google chrome浏览器中使用javascript获取google chrome扩展名的Windows用户名
但是,关于IE8却一无所获,Chrome解决方案似乎需要大量工作。
提前致谢
小智 5
您可以使用以下三个文件将Windows用户名添加到JSP会话中。
1.user1.html
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<body>
<script>
var myWindow;
function openWin() {
myWindow =window.open("http://cmtech9:8080/WinUser/GetUser.jsp","Login","height=50,width=150");
setTimeout(function(){ myWindow.close() }, 3000);
}
</script>
<body onload="openWin();">
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
2.user.js这将打开选项卡并自动关闭选项卡
function testing() {
window.setTimeOut("window.close();",1000)
}
Run Code Online (Sandbox Code Playgroud)
3,GetUser.jsp
<%@ page import="sun.misc.BASE64Encoder" %>
<%@ page import="java.util.regex.Matcher"%>
<%@ page import="java.util.regex.Pattern"%>
<head>
<script type="text/javascript" src="user.js"></script>
<script type="text/javascript">
testing()
</script>
</head>
<p><h4>Network Windows USERNAME without any login (ie)</h4></p>
<body >
<%
HttpSession sess = request.getSession();
String auth = request.getHeader("Authorization");
if (auth == null) {
response.setStatus(response.SC_UNAUTHORIZED);
response.setHeader("WWW-Authenticate", "NTLM");
return;
}
if (auth.startsWith("NTLM ")) {
byte[] msg =
new sun.misc.BASE64Decoder().decodeBuffer(auth.substring(5));
int off = 0, length, offset;
String s;
if (msg[8] == 1) {
off = 18;
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.setStatus(response.SC_UNAUTHORIZED);
response.setHeader("WWW-Authenticate", "NTLM "
+ new sun.misc.BASE64Encoder().encodeBuffer(msg1).trim());
return;
}
else if (msg[8] == 3) {
off = 30;
length = msg[off+17]*256 + msg[off+16];
offset = msg[off+19]*256 + msg[off+18];
s = new String(msg, offset, length);
//out.println(s + " ");
}
else
return;
length = msg[off+1]*256 + msg[off];
offset = msg[off+3]*256 + msg[off+2];
s = new String(msg, offset, length);
//out.println(s + " ");
length = msg[off+9]*256 + msg[off+8];
offset = msg[off+11]*256 + msg[off+10];
s = new String(msg, offset, length);
sess.setAttribute("username", s);
out.println("Hello <span style='position:relative; width:190;"
+ " height:10;filter:glow(Color=#009966,Strength=1)'>");
out.println(s + "</SPAN>");
String result=s.replaceAll("\\W", "");
System.out.println(result);//+""+result.length());
/* System.out.print(n.length()); */
}
%>
</body>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12349 次 |
| 最近记录: |