0

(WCFDS = WCF Data Services 5,由实体框架支持,使用 oData v3,格式化为 JSON,通过 IIS7 提供服务并受 Windows 身份验证保护。)

关键是通过 AJAX 调用以经过身份验证的方式访问 WCFDS。

为此,我有一个作为 ASP.Net Web 应用程序的客户端,在 Web.config 中设置了 Windows 身份验证,并且有一个指向 WCFDS 的服务参考。

我想使用客户端 JavaScript 来访问服务参考。我怎样才能做到这一点?

我考虑过创建一个 aspx 页面,在客户端中托管并直接从 JavaScript 代码调用此页面,然后通过服务参考检索数据 - 但我不知道如何公开服务参考的全部功能以这种方式(有几十个实体)。

任何人都可以提供建议吗?

4

1 回答 1

0

web.config 中的 Windows 授权设置与 WCF 数据服务没有直接关系,因此您可能不需要在那里设置任何内容。您需要在 IIS 中正确设置您的设置。

有许多关于在 WCF 数据服务上使用 Windows 授权的好文章;简而言之,您在选择公开授权的方式上有很大的自由度(从从提要中过滤掉单个实体到抛出 401/403)。

有几篇好文章可以通读:

您可能编写的最简单的代码将类似于以下内容:

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...
    }
}

请注意,客户端的所有内容都由浏览器控制,因此您实际上不需要在那里做任何事情(最大的步骤可能是将站点添加到受信任的站点,这样它就不会提示您输入凭据,如果您“重新在加入域的机器上)。

于 2012-07-19T16:19:43.787 回答