(WCFDS = WCF数据服务5,由实体框架支持,使用oData v3,格式化为JSON,通过IIS7提供并受Windows身份验证保护。)
症结是通过AJAX调用以经过身份验证的方式访问WCFDS。
为此,我有一个客户端作为ASP.Net Web应用程序,在Web.config中设置了Windows身份验证,并指向了WCFDS的服务引用。
我想使用客户端JavaScript访问服务参考。我怎么能这样做?
我考虑过创建一个aspx页面,在客户端托管并从JavaScript代码直接调用到这个页面,然后通过服务参考检索数据 - 但是我对如何公开完整的功能感到茫然这种方式的服务参考(有几十个实体)。
任何人都可以提供建议吗?
答案 0 :(得分:0)
web.config中的Windows授权设置与WCF数据服务没有直接关系,因此您可能不需要在那里设置任何内容。您需要在IIS中正确设置设置。
有很多关于在WCF数据服务上使用Windows授权的好文章;简而言之,您在如何选择公开授权方面拥有广泛的自由度(从过滤单个实体到投放401 / 403s)。
阅读几篇好文章:
您可能编写的最简单的代码将是:
namespace Scratch.Web
{
[ServiceBehavior(IncludeExceptionDetailInFaults = true)]
public class ScratchService : DataService<ScratchContext>
{
[QueryInterceptor("Products")]
public Expression<Func<Product, bool>> ProductsAuthorization()
{
if (!HttpContext.Current.Request.IsAuthenticated)
{
return (p) => false;
}
return (p) => HttpContext.Current.User.IsInRole("AllowAccessToProducts");
}
// ...rest of service code...
}
}
请注意,客户端上的所有内容都由浏览器控制,因此您不需要在那里执行任何操作(最大的一步可能是将站点添加到可信站点,因此它不会提示您输入凭据如果你在一个加入域的机器上。)