我在Orchard CMS中实施IAuthorizationServiceEventHandler
时遇到了困难。
这里的问题是我想检查特定权限(我的模块定义的权限),但处理程序方法的参数(类型Orchard.Security.CheckAccessContext
)不提供被检查权限的功能名称。 / p>
为什么会这样或者这是一个错误?
当然,我可以将我的许可命名为MyModuleName.PermissionName
或使用其他类型的名称编码,但我认为这是不切实际的,因为我们已经将功能名称链接到数据库中的权限。
答案 0 :(得分:0)
嗯,在重新考虑我的方法并观看调用堆栈后,问题不再是问题。
我的问题是基于我需要比较aContext.Permission.Name
提供的问题。 IAuthorizationServiceEventHandler.Complete()
具有我模块的权限名称。
但是由于例如aContext.Permission
提供的实例IAuthorizationServiceEventHandler.Complete()
是传递给相关IAuthorizationService.TryCheckAccess()
调用的实例,我可以进行简单的比较,例如
if (aContext.Permission == MyModule.Permission.PermissionA) { ... }
并且它有效,因为两个实例都具有相同的指针地址。