【发布时间】:2010-07-28 21:17:41
【问题描述】:
我正在尝试保护我的 MVC 路由免受一组满足一组条件的用户的影响。由于 MVC 似乎使用了相当多的属性,而 Steven Sanderson 在他的专业 MVC 书籍中使用了一个属性来实现安全可扩展性,我开始沿着这条路线走下去,但我想根据我应用它的操作来根据上下文定义规则。
有些操作仅适用于员工,有些则不是。
有些操作仅适用于 company1,有些则不是。
所以我在想这种用法……
[DisableAccess(BlockUsersWhere = u => u.Company != "Acme")]
public ActionResult AcmeOnlyAction()
{
...
}
[DisableAccess(BlockUsersWhere = u => u.IsEmployee == false)]
public ActionResult EmployeeOnlyAction()
{
...
}
对我来说看起来很干净并且非常容易实现,但是我收到以下编译器错误:
'BlockUsersWhere' 不是有效的命名属性参数,因为它不是有效的属性参数类型
显然你不能使用 Func 作为属性参数。有什么其他建议可以解决这个问题或提供我们在 MVC 项目中喜欢的简单用法的其他建议吗?
【问题讨论】:
标签: c# asp.net asp.net-mvc attributes