【问题标题】:how to excluding global filter for a single controller如何排除单个控制器的全局过滤器
【发布时间】:2020-12-15 12:48:22
【问题描述】:

我正在为我的 Codeigniter 4 项目使用 Myth-Auth 库,并且在全局登录过滤器之前启用。因此,如果有人在未登录的情况下想要访问任何控制器,则会重定向到登录页面。
我的项目是一个物联网项目,我制作了 1 个控制器来处理来自 NodeMCU 的数据。但是因为我全局启用了登录过滤器,我的 nodemcu 无法访问此控制器并始终重定向到登录页面。
所以我的问题是如何仅针对单个控制器排除此全局过滤器?谢谢你

【问题讨论】:

    标签: codeigniter-4


    【解决方案1】:

    已经解决
    只需在过滤器配置上添加 except 选项

    public $globals = [
        'before' => [
            'login' => ['except' => ['/Hub/*']] //just add like this
        ],
        'after' => [
            'toolbar'
          ]
        ],
    ];
    

    【讨论】:

      【解决方案2】:

      如果您以全局方式运行任何过滤器,则 $globals 数组应包含所有要排除的方法。当我按照提供的答案 (https://stackoverflow.com/a/65316873/9663356) 中的建议进行操作时,我在登录时得到了循环重定向 - 因为过滤器不断重定向到未标记为在全局数组中排除的方法登录。

      我正在使用 IonAuth 身份验证库,所以我的 $globals 数组现在看起来像这样:

          public $globals = [
          'before' => [
              'checkLogin' => [
                  'except' => [
                      //method I wanted publically available
                      'calls/public', 
                      //IonAuth methods that should be publically available
                      'auth/login', 
                      'auth/forgot_password',
                      'auth/reset_password',
                      ]
                  ] //just add like this
              // 'honeypot',
              // 'csrf',
          ],
          'after' => [
              'toolbar',
              // 'honeypot',
          ],
      ];
      

      【讨论】:

        猜你喜欢
        • 2013-01-29
        • 1970-01-01
        • 1970-01-01
        • 2019-08-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-20
        相关资源
        最近更新 更多