在我的 .net mvc 4 应用程序中,我使用最新版本的FluentSecurity (1.4) 来保护我的操作。
这是一个说明我的问题的示例:
假设我有一个带有 2 个编辑操作(获取和发布)的控制器:
public class MyController : Controller
{
//
// GET: /My/
public ActionResult Edit(decimal id)
{
var modelToReturn = GetFromDb(id);
return View(modelToReturn);
}
[HttpPost]
public ActionResult Edit(MyModel model)
{
Service.saveToDb(model);
return View(model);
}
}
现在,我想为每个操作设置不同的安全策略。为此,我定义(使用流利的安全性):
configuration.For<MyController>(x => x.Edit(0))
.AddPolicy(new MyPolicy("my.VIEW.permission"));
configuration.For<MyController>(x => x.Edit(null))
.AddPolicy(new MyPolicy("my.EDIT.permission"));
第一个配置是指get,第二个是post。如果你想知道我为什么要发送虚拟参数,你可以看看这里和这里。
问题是流利的安全性无法区分这两者之间的区别,因此这不起作用。
找不到克服它的方法(我对想法持开放态度),我想知道安装新的 2.0 beta 版本是否可以解决这个问题。
有任何想法吗?