我正在使用jquery从我的网站访问asp.net Web服务。此Web服务需要获取访问它的用户的用户ID,并且用户使用我的网站上的asp.net身份验证登录。
在asp.net中我可以写“User.Identity.Name”来获取用户ID,现在我需要找到一种在客户端获取此功能的方法,这怎么可能?
我访问网络服务的代码:
$.ajax({
type: "GET",
url: "http://domain.com/Service.svc/search?keyword=" + this.value + "&userid=" + HERE I NEED THE USERID,
dataType: "json"
.....
});
一种方法是将用户ID放在隐藏的字段或其他内容中并以这种方式访问它,这可能是要走的路吗?
答案 0 :(得分:3)
假设这一切都在一个受信任的内部网络(例如公司?)上,那么jQuery调用将以与对您的网站相同的方式向Web服务提供用户的凭据。 Web服务是否可以检查谁在通话中进行了身份验证(例如,使用User.Identity.Name)?
这种方法远比在查询字符串上提供用户名(或作为Web服务调用的参数)更为可取,因为其中任何一个都很容易被颠覆。
答案 1 :(得分:1)
$.ajax({
type: "GET",
url: "http://domain.com/Service.svc/search?keyword="
+ this.value + "&userid=<%= User.Identity.Name %>",
dataType: "json"
.....
});
会这样做,但你确定需要吗?如果这不是跨域调用,则请求应来自经过身份验证的用户会话,因此在您的服务中,您可以在后面的代码中提取该信息。
作为Rob points out,这可以很容易地被某人修改,因此您可能实际上想要使用其他内容,例如使用您在两端知道的salt和密钥加密用户名。