我有三个授权属性,其中包含用于检查所请求内容是否确实存在的代码。我决定通过创建一个名为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
属性(及以下)禁止使用?
答案 0 :(得分:1)
您可以设置每个属性的执行顺序:
[QuizExists(Order = 1)] // Check that quiz exists
[ActiveQuizTakerSession(Order = 2)] // Check that they have an active session for this quiz
[HttpGet]
以下是一个很好的参考资料,可以帮助您:
Order property of ActionFilter, from lowest to greatest or vice versa?