强制两个操作筛选器属性相互结合使用

本文关键字:属性 结合 筛选 操作 两个 | 更新日期: 2023-09-27 18:30:56

>我有三个授权属性,其中包含用于检查所请求的内容是否确实存在的代码。 我决定通过创建一个名为 QuizExistsAttribute 的新属性来避免在每个属性中重复自己。

我希望在我的其他授权属性之前运行它。

现在我有了这个额外的属性,我希望确保我使用的原始属性不会在没有这个新属性的情况下使用——因为我希望在任何其他事情之前进行检查。

依赖于正在执行的QuizExistsAttribute逻辑的其他授权属性是:

  • ActiveQuizTakerSessionAtrribute
  • AuthorizeQuizAdminAttribute

所以在我的代码中,我将像这样使用它们:

/// <summary>
/// Start of a quiz
/// </summary>
/// <param name="urlId"></param>
/// <returns></returns>
[QuizExists] // Check that quiz exists
[ActiveQuizTakerSession] // Check that they have an active session for this quiz
[HttpGet]
public ActionResult QuizQuestion(string urlId)
{
    // Code here after checks
}

有没有办法强制ActiveQuizTakerSessionQuizExists 属性一起使用(并遵循)禁令?

强制两个操作筛选器属性相互结合使用

您可以设置每个属性的执行顺序:

[QuizExists(Order = 1)] // Check that quiz exists
[ActiveQuizTakerSession(Order = 2)] // Check that they have an active session for this quiz
[HttpGet]

这里有一个很好的参考,可以进一步帮助你:

ActionFilter的顺序属性,从最低到最大,反之亦然?