如何在 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) { ... }
它之所以有效,是因为两个实例具有相同的指针地址。
我在 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) { ... }
它之所以有效,是因为两个实例具有相同的指针地址。