我首先使用的技术:
我刚刚编写了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中支持率低。
我发现这里只有一些与我的问题相关的帖子,但遗憾的是它没有解决我的问题。
您对此问题有任何建议或解决方案吗?