0

我们将使用 MVC 4 构建一个应用程序。一个关键要求是视图级审计。换句话说,我们必须能够显示访问视图/屏幕的人员(例如人员详细信息)、创建视图的参数以及访问视图的时间。这是一个新的应用程序,所以我们几乎可以做任何需要做的事情来满足这个要求。

数据库将是 SQL Server 2008。数据访问将包括 EF 4.x,可能是 5.x,但不确定。

我的问题是,如何开始设计此功能?那里有任何示例应用程序吗?

4

2 回答 2

1

不要介意在视图级别进行审核。我认为审计行动更好。您可以使用全局操作过滤器(例如此处)来执行此操作。

于 2012-07-19T19:32:38.787 回答
0

EF 不适用于视图。您可能会更好地使用您手动编写代码的直接 ADO.NET 持久层,或者 Linq2Sql 在使用视图方面会更好一些(尽管您仍然必须手动连接它们)。nHibernate 可能是最好的 ORM 使用。

编辑:

@user1469655 - 你对 MVC 的工作原理有一个非常根本的误解。“视图”不是页面。这是一个模板。您可能认为的“页面”(即访问特定的 url)实际上是两个不同事物的组合,一个路由和一个动作。一个动作可以导致一个特定的模板(视图)渲染,但动作和视图之间不一定是 1:1 的相关性。

“动作”是控制器的方法。这通过路由映射到 URL。通常(但不一定),这意味着这样的事情:

http://www.my.site/controller/action

当用户访问此 URL 时,它会调用 action 方法,并可能会呈现视图。不同的action可以渲染同一个view,因为这无非就是一个html模板,任何action方法都可以随意渲染。

因此,您想要做什么取决于您实际记录的内容。记录对视图的访问没有任何意义,因为这实际上没有任何意义。您要做的是通过操作记录访问,甚至可能通过路由记录访问。

最简单的方法是使用在每个操作之前调用的全局操作过滤器,在该过滤器中,您可以记录您需要的信息(用户 ID、日期、时间、操作、引荐来源网址等).. 它得到呼吁采取每一个行动。但是,它不会被忽略的路由调用(例如像 javascript、图像、css、直接下载的文件等内容)。如果您需要记录这些,则需要通过操作控制对它们的访问。

这里有一个关于动作过滤器的很好的教程

http://www.asp.net/mvc/tutorials/older-versions/controllers-and-routing/understanding-action-filters-cs

于 2012-07-19T19:29:23.287 回答