果园主题属性外部控制器

Orchard Themed Attribute outside controllers

我有一项服务会覆盖响应正文的内容。
是否可以在覆盖内容的方法中使用主题?

[Themed]
public void forbiddenAlert(IHttpContextAccessor Hca) 
{
  // overriding response body 
}

不,我认为这不会起作用,因为 Themed 属性仅用于装饰控制器。

此外,我认为您拒绝访问的方法不正确。事件处理程序不应覆盖响应主体(关注点分离,它很可能无论如何都不起作用)。 IAuthorizationServiceEventHandler 应该检查权限和 return 是否授予访问权限。授予或未授予权限时发生的情况通常是其他代码部分的关注点。我会走这条路:

  1. 在所有模块中实施适当的权限检查(IAuthorizer, IAuthorizationService),并在失败时回退到任何合适的地方,例如重定向到禁止的错误页面
  2. 添加一个 IAuthorizationServiceEventHandler 以相应地实施检查