我如何才能在 October CMS 上仅在组件 Class 或插件上创建中间件?

How i can create Middleware on October CMS only on Component Class or Plugin?

我在 10 月的信息上阅读了 doku 并搜索了有关中间件的信息,但没有找到我可以提供的帮助。

我的问题: 我创建了插件并使用 RainLab 用户插件进行内容的前端编辑。 前端内容在章节、组和文章中溢出。 单一用户成为不同的访问权限:隐藏、显示、编辑等部分和文章。 该站点使用一个插件来动态加载内容。

如何通过访问配置为单个用户加载内容?

我的解决方案:

我在后端添加了一些功能来为用户提供访问权限。 rainlab user content access

所有访问配置已保存并有效。 我的想法是创建中间件来加载内容,但我找不到任何可以帮助我的东西。

Docu 告诉我您可以创建中间件,但中间件始终加载在前端、后端和网站上的所有页面上。这不是好的解决方案。 https://octobercms.com/docs/backend/controllers-ajax#controller-middleware

此外,如果我在中间件上进行调试,那么 rainlab 用户功能无法正常工作,没有关于 url 请求的信息。

当您必须自己加载和创建所有 classes 和函数时,为什么要添加中间件??

我只需要用于前端和插件或组件的中间件。 我希望有人能帮我找到另一个解决方案或想法来修复它。

我认为除了在 onRun 函数的各个组件中实现内容访问之外别无他法。 :( 这个解决方案的问题是:return 重定向在 class 或函数之外不起作用(仅在 onRun 上)

您的方法存在问题,正如您所希望的那样 middleware 并且您还想确保它 运行 用于特定的插件和组件。 middleware 基于 request 工作,请求可能有关于 URL 等的信息,但没有关于插件和组件等的信息,因此它无法确定何时根据插件等 运行。 .`

So you may use Different approach. and it will work with Frontend also with ajax requests.

您可以在您的插件中创建 component,如果用户已登录,它将 assessment 所有已登录用户的 access。如果用户未登录,您可以提供不同 assessment access.

现在您需要将此组件添加到使用 this layoutlayoutnow all pages 从一开始就有这个 access information

现在这个组件inject access information to page,所以你的页面和插件的组件可以随时获得这些信息。现在,从 onRun 中的组件,您可以在最顶部处理重定向。

组件不是定义访问权限,它只是将数据库中的预定义访问信息注入到页面

组件将专门为页面注入访问信息。并且该组件将在布局上如此。它会自动触发该布局页面。所以它会首先执行,然后你可以决定如何使用它。您还可以基于此呈现条件组件。因为您也可以在标记部分获得访问信息,所以

如果您有任何疑问或问题,请发表评论。