jquery与asp.net和身份验证一起使用

时间:2009-12-11 11:31:11

标签: asp.net jquery authentication

我正在使用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放在隐藏的字段或其他内容中并以这种方式访问​​它,这可能是要走的路吗?

2 个答案:

答案 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和密钥加密用户名。