如何在 Orchard CMS 中实现 IAuthorizationService 事件处理程序?

How to implement IAuthorizationServiceEventHandler in Orchard CMS?

我在 Orchard CMS 中实施 IAuthorizationServiceEventHandler 遇到困难。

这里的问题是我想检查特定权限(由我的模块定义的权限)但是处理程序方法的参数(类型 Orchard.Security.CheckAccessContext)不提供被检查权限的功能名称.

为什么会这样或者这是一个错误?

当然,我可以像 MyModuleName.PermissionName 这样命名我的权限或使用其他类型的名称编码,但我认为这不切实际,因为我们已经将功能名称链接到数据库中的权限。

嗯,在重新考虑我的方法并查看调用堆栈之后,问题不再是问题。

我的问题是基于我需要比较 aContext.Permission.Name 提供的想法。 IAuthorizationServiceEventHandler.Complete() 使用我的模块的权限名称。

但由于实例 aContext.Permission 由例如IAuthorizationServiceEventHandler.Complete() 是传递给相关 IAuthorizationService.TryCheckAccess() 调用的实例我可以做一个简单的比较,比如

if (aContext.Permission == MyModule.Permission.PermissionA) { ... }

它之所以有效,是因为两个实例具有相同的指针地址。