我需要编写一些代码来在我的项目数据库中查找ID。 用户与项目耦合,所有项目与其他对象(如会话)有很多连接。从控制器构造函数中的URL获取参数
现在我需要在运行任何操作之前检查,如果用户尝试访问Session,连接到与会话连接的同一项目。
为此,我想在Actions上使用[Attribute]。 MVC: creating a custom [AuthorizeAttribute] which takes parameters?
这个问题的答案让我开始,但我使用控制器的构造函数来得到我的Project ID
的目标是,我可以在每个构造函数编写一些代码,具有麻烦我所有的根据项目对象的控制器,找到项目ID并使其可访问(公共),因此我的[customauthorize]
将有权访问此项目ID以检查用户是否有权访问。
我的问题:
public class SessionController : Controller {
NASDataContext _db = new NASDataContext();
public SessionController() {
var test = RouteData;
var ses = _db.Sessies.First(q=>q.Ses_ID==1);
}
如何访问我的RouteData? RouteData
为空,HttpContext
为空并且Request
为空。
我需要的ID在URL中,这是在的RouteData ...
在检查模型。这是一个有趣的方法。一个人会怎么做?你有任何讲座/例子吗?我会在模型上编写一个扩展方法吗?或者,我会像编辑Action GET请求一样,更改获取对象的LINQ代码,并在那里添加过滤器,这会导致找不到该项目,并且需要一些额外的检查是否有正确的错误信息。 – Stefanvds 2011-01-14 12:26:39
这真的归结为模型的实现。如果您只是在您的Controller操作中访问Linq to SQL,那么您有两种基本方法和一种架构方法。第一个使我的建议没有意义,这就是你要修改代码的每一个实例,访问有访问控制的对象的地方。其次是使用L2S对象生成为部分并将检查添加到Project对象的事实。最后是最好的恕我直言,实施存储库模式,并把检查存储库。更清洁,可测试和可维护。 – Lazarus 2011-01-14 12:34:50