基于角色的控制器动作

时间:2016-05-04 09:00:56

标签: c# asp.net-mvc

我的MVC应用程序是双用的,在两种模式下都提供了几乎完全相同的功能。

Index视图通过下拉列表提供一组搜索选项 ,除了一些可用的选项受到限制。

在我的控制器上,我需要根据Index()设置路由到其他[Authorize]操作。注意:基于Active Directory组的角色

[Authorize(Roles = @"Admin")]
[HttpGet]
public ActionResult Index()
{
}

[Authorize(Roles = @"User")]
[HttpGet]
public ActionResult Index()
{
}

显然,这不会起作用,因为有两个相同的方法签名所以不会编译。

使用不同方法名称的下一个选项

[Authorize(Roles = @"Admin")]
[HttpGet]
public ActionResult IndexADMIN()
{
}

[Authorize(Roles = @"User")]
[HttpGet]
public ActionResult IndexUSER()
{
}

...但那意味着其中一种模式必须在URL中明确地拥有视图/控制器动作(嗯,这是我的理解)。

最后一个选项是只更改其中一个方法的签名并添加一个被忽略的虚拟参数,但它不是很优雅!

[Authorize(Roles = @"Admin")]
[HttpGet]
public ActionResult Index()
{
}

[Authorize(Roles = @"User")]
[HttpGet]
public ActionResult Index(bool Dummy)
{
}

0 个答案:

没有答案