如何在Orchard CMS中实现IAuthorizationServiceEventHandler?

时间:2016-04-28 14:37:38

标签: authentication permissions handler orchardcms

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

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

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

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

1 个答案:

答案 0 :(得分:0)

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

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

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

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

并且它有效,因为两个实例都具有相同的指针地址。