如何以不同于控制器的方式授权一种方法? (MVC)

时间:2015-12-29 17:32:11

标签: c# asp.net-mvc

在我目前正在处理的项目中,我有三个角色:管理员,超级用户和用户。

管理员可以删除用户,删除评论等,但超级用户也必须能够删除评论。所以我构建了一个AdminController并使用Admin授权它。超级用户必须能够访问一种方法,因此我为超级用户授权但不会工作。

[Authorize(Roles = "Admin")]
public class AdminController : Controller
{
    (... here be only admin methods ...)

    [HttpGet]
    [Authorize(Roles = "Super-user")]
    public ActionResult Delete()
    {
        //deletes a comment
        return View();
    }

    (... here be only admin methods ...)
}

我查看了覆盖Authorize属性,但我试图找到一个不需要的解决方案,对于如何为超级用户授权一种方法有什么想法?

作为超级用户的管理员必须能够访问方法Delete()

谢谢!

1 个答案:

答案 0 :(得分:1)

我认为@Felix Cen指出这应该适用于控制器

String

然后在方法级别指定

myUtterance = AVSpeechUtterance(string: sender.currentTitle ?? "")

或者,您可以使用this问题

中指出的拒绝属性
[Authorize(Roles = "Admin, Super-user")]

这里的另一个问题(我认为我有点像this具体答案)

  

我个人对此的看法是拆分控制器。只是创造   另一个控制器对于您不需要身份验证的操作。

     

或者你可以:

[Authorize(Roles = "Super-user")]
     

通过这种方式,您可以在需要时进行身份验证,只需通过派生即可   来自特定的班级。