我们在使用Apache的iSeries上使用PHP运行我们的intranet站点。默认情况下,托管在该框上的PHP无法自动获取登录的windows用户的用户名。
使用windows服务器托管的asp.net页面,我们可以自动获得该用户名。
从一个PHP页面,称之为login.PHP,我想(通过任何方法),调用或重定向用户到托管在不同服务器上的asp.net网页。这个asp.net页面将返回一个值(用户名)。
我知道从.net检索用户名的语法。但是,我不想做的是,用一个querystring示例将URL重定向回login.php?username=鲍勃。。。因为它对用户是直接可见的,并且有许多明显的缺陷。
我该如何实现这一目标?也许使用Ajax?或者某种.net代码,例如Request.LastUrlVisited.ReturnValue("bob"),它不会显示在URL栏中?
我认为asp.net页面需要特别是一个网页,因为asp.net Web服务不能从windows中重新设置用户名。
谢谢,
更新
通过这些评论,我了解到asp.net网络服务实际上可以获得用户名。。它不需要是网页。因此,这为从php调用Web服务开辟了一系列可能性。
好的,我假设您可以将.Net网站转换为web服务。这看起来像这样:
[WebMethod]
public string GetUserName()
{
}
然后,您可以调用此Web服务表单JQuery:
$.ajax({
type: "POST",
url: "blah.asmx/GetUserName",
data: "{}",
dataType: "text",
success: function(username) {
//do stuff
}
});
HEre是一个有更好解释的网站:
http://encosia.com/using-jquery-to-consume-aspnet-json-web-services/
编辑
我也会加密用户名
好吧,为什么不创建一个asp.net Web服务,对asp.net Web Service进行json/webservice调用并获取用户名,你可以检查一下-从Web服务获取用户名
代码:
Context.Request.ServerVariables["LOGON_USER"]