2010-03-04 46 views
0

我正在做的基础上,文章Securing Dynamic Data Preview 4 Refresh动态数据网站安全许可制度。系统包含额外的权限种类:“如果记录不属于用户所有权,则拒绝记录/域的操作”。动态让表/列只读/隐藏在ASP.NET DD

如果一个用户只能读取自己的对象,我们必须在详细列表和检查权限始终启用过滤器。如果用户只能编写自己的对象,我们需要在编辑和删除中检查权限,从列表中删除一些行中的“编辑/删除”链接,使“用户”字段只读,并在插入中提供其值。我没有考虑过这种列级权限。

所以,主要的问题,因为我看到在这一刻:太多的地方放置相同的检查(我根本就没想到恶意用户各具特色的POST数据)。此外,我不能让使插入字段在同一只读并且具有显示并保存到DB值(我不希望把该模型中的部分类,因为我认为,已经有太多的地方需要编辑才能实现此功能)。

  1. 有没有一个地方否认读取或依赖于对象值的对象写操作?
  2. 我怎样才能提供一个默认值到外地,这样它会插入网页上显示,插入到数据库,不能由用户插入之前可以更改?

回答

0

下面假设你使用LINQ to SQL。

有没有一个地方否认读 或根据对象值的对象 写操作?

读取

我所知,没有限制更简单的方法比读一个过滤器添加到所有相关的LinqDataSource控制。如果你能够实现你的过滤器,你可以编写一个QueryCreated处理程序,然后添加一行注册自定义处理程序到所有页面模板。

写入

Dynamic Data metadata,添加一个的OnValidate局部法向所有相关的表。如果当前用户不允许ChangeAction给定记录,则抛出异常。您仍然需要更新所有页面模板以隐藏用户无权访问的UI元素,但至少您可以放心,在某些意外情况下可能发生的最坏情况是用户看到错误页面。

我如何可以提供一个默认值 领域,使之在 显示插入页面,插入到数据库 ,不能由用户 插入之前可以更改?

也许看添加OnCreated的OnValidate局部方法的一些组合。另见:this answer