扩展AuthorizeAttribute覆盖AuthorizeCore或OnAuthorization

使用ASP.NET MVC我创build一个自定义的授权属性来照顾一些自定义的授权逻辑。 我看了很多例子,这是非常简单的,但我的问题是哪个方法是最好的重写,AuthorizeCore或OnAuthorization? 我看到很多例子都凌驾于其中。 有区别吗?

线索在返回types中:

AuthorizeCore返回一个布尔值 – 它是决策代码。 这应该限于查看用户的身份和testing他们在哪个angular色等。基本上它应该回答这个问题:

Do I want this user to proceed?

它不应该进行任何“侧面”的附加活动。

OnAuthorize返回void – 这是你放置任何需要在这一点上发生的function的地方。 例如写入日志,在会话中存储一些数据等。

您应该放置任何必须运行的代码,而不pipe用户是第一次被授权,还是在AuthorizeCore中使用cachingAuthorizeCore

如果您查看源代码,您可以看到AuthorizeCoreOnAuthorizeOnCacheAuthorization 。 这允许授权被caching,但仍然允许某些行为并作出关于授权的实际决定。

如果您需要AuthorizationContext中的某些内容,则可以创build一个属性来保存这些信息,然后在AuthorizeCore方法中访问它。