强制两个操作筛选器属性相互结合使用
本文关键字:属性 结合 筛选 操作 两个 | 更新日期: 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
}
有没有办法强制ActiveQuizTakerSession
与 QuizExists
属性一起使用(并遵循)禁令?
您可以设置每个属性的执行顺序:
[QuizExists(Order = 1)] // Check that quiz exists
[ActiveQuizTakerSession(Order = 2)] // Check that they have an active session for this quiz
[HttpGet]
这里有一个很好的参考,可以进一步帮助你:
ActionFilter的顺序属性,从最低到最大,反之亦然?