2009-12-11 64 views
0

我正在使用jquery从我的网站访问一个asp.net web服务。此Web服务需要获取访问它的用户的用户ID,并且用户使用我的网站上的asp.net身份验证登录。jquery与asp.net和身份验证

在asp.net中,我只需编写“User.Identity.Name”来获取用户标识,现在我需要找到一种在客户端获取这个标识的方法,那可能如何?

我对访问Web服务代码:

$.ajax({ 
    type: "GET", 
    url: "http://domain.com/Service.svc/search?keyword=" + this.value + "&userid=" + HERE I NEED THE USERID, 
    dataType: "json" 
    ..... 
}); 

一种方式是把用户ID在一个隐藏字段或东西和获得这样的说法,算得上是要走的路?

回答

3

假设这一切都在可信任的内部网络(例如公司?)上,那么jQuery调用将以与它的网站相同的方式向web服务提供用户的证书。 Web服务能否检查通过身份验证的用户(例如,使用User.Identity.Name)?

这种方法远比在查询字符串上提供用户名(或作为Web服务调用的参数)更为可取,因为这两种方法中的任何一种都很容易被颠覆。

+0

啊哈,所以如果网络服务在同一个域(它是),我可以只获得Web服务上的用户ID? :)从来没有想过那.. – Martin 2009-12-11 14:13:09

1
$.ajax({ 
    type: "GET", 
    url: "http://domain.com/Service.svc/search?keyword=" 
      + this.value + "&userid=<%= User.Identity.Name %>", 
    dataType: "json" 
    ..... 
}); 

会这样做,但你确定你需要吗?如果这不是跨域调用,请求应该来自经过身份验证的用户会话,因此在您的服务中,您可以在后面的代码中提取该信息。

由于Rob points out,这可以很容易地由某人修改,所以你可能实际上想要使用别的东西,例如使用你知道在两端的盐和密钥加密用户名。