访问WCF数据服务中put / get方法的某些字段

时间:2012-03-17 11:44:49

标签: .net wcf entity-framework permissions wcf-data-services

我首先使用的技术:

  • 数据模型:实体框架
  • 服务:WCF数据服务

我刚刚编写了WCF数据服务应用程序。我添加了自定义身份验证/授权操作,以提供一些限制,以防止每个用户删除,更新等访问。

它工作正常,但现在我遇到了一个新问题。

可以编辑User_table的用户他也可以从他的帐户中删除IsBanned标志或更改他的角色...... 例如,我有以下实体模型:

User_table
-----------
id
user_id
name
is_banned
role

我对访问角色的实现是在 ProcessingPipeline.ProcessingRequest 中,我正在解析httpContext,我正在寻找http方法和表名。

要过滤返回给用户的数据,我正在使用拦截器。例如,我的查询拦截器如下所示:

    [QueryInterceptor("User_table")]
    public Expression<Func<User_table, bool>> OnTagt() {
        MyPrincipal user = HttpContext.Current.User as MyPrincipal;
        if( user.IsInRole("NormalUser") )
            return o => o.user_id == user.id;
        else
            throw new DataServiceException("You must be logged in");
    }

当然我正在使用一些我不希望在我的身份验证/授权方法中向用户显示的列,因此我不想将其从数据模型中删除。

此外,根据用户所属的角色,他会看到不同的列。

我想到的最简单的解决方案是为每个角色创建单独的数据模型。这可能是非常可怕和有问题的。

我不想用户视图,因为他们在EF中支持率低。

我发现这里只有一些与我的问题相关的帖子,但遗憾的是它没有解决我的问题。

您对此问题有任何建议或解决方案吗?

0 个答案:

没有答案