【问题标题】:Codeigniter 4 auto routes cannot be redirected to?Codeigniter 4 自动路由无法重定向到?
【发布时间】:2023-01-14 06:16:00
【问题描述】:

我已经设置了一个新的 CI4 项目,设置了 CI4 的 Shield 授权库,并且从字面上从全新安装开始。我已经设置了自动路由并创建了新的控制器(Dashboard.php、Profile.php、Login.php)。我还设置了过滤器以在身份验证后锁定仪表板和配置文件,因此它应该重定向到登录页面。

我的问题是自动路由知道有一条“登录”路由,但是当我尝试在未登录的情况下访问仪表板时,CI4 告诉我“找不到‘登录’的路径。”

Spark 列出路由如下:

+------------+-----------------+------------------------------------------+--------------------+---------------+
| Method     | Route           | Handler                                  | Before Filters     | After Filters |
+------------+-----------------+------------------------------------------+--------------------+---------------+
| GET        | /               | \App\Controllers\Home::getIndex          | session            | toolbar       |
| CLI        | ci(.*)          | \CodeIgniter\CLI\CommandRunner::index/$1 |                    |               |
| GET(auto)  | dashboard       | \App\Controllers\Dashboard::getIndex     | session            | toolbar       |
| GET(auto)  | login           | \App\Controllers\Login::getIndex         | auth-rates         | toolbar       |
| POST(auto) | login           | \App\Controllers\Login::postIndex        | auth-rates         | toolbar       |
| GET(auto)  | profile         | \App\Controllers\Profile::getIndex       | session auth-rates | toolbar       |
| GET(auto)  | results         | \App\Controllers\Results::getIndex       | session            | toolbar       |
| GET(auto)  | users           | \App\Controllers\Users::getIndex         | session            | toolbar       |
| GET(auto)  | users/edit[/..] | \App\Controllers\Users::getEdit          | session auth-rates | toolbar       |
| GET(auto)  | users/add       | \App\Controllers\Users::getAdd           | session auth-rates | toolbar       |
| GET(auto)  | work            | \App\Controllers\Work::getIndex          | session            | toolbar       |

Shield 尝试重定向到/codeigniter4/shield/src/Filters/SessionAuth.php : 60 中的“登录”路由:

return redirect()->route('login');

但它似乎无法识别自动路由。我已经验证了实际的自动路线/login确实有效并显示视图的内容。

我究竟做错了什么?是否有可能无法将自动路由重定向到?

我希望考虑到 Shield 是 CI4 的内置授权系统,它能够重定向到登录自动路由......

【问题讨论】:

    标签: php codeigniter redirect routes authorization


    【解决方案1】:

    如果你的意思是你不能去默认登录(屏蔽)页面。您可以编辑文件app/Config/Routes.php

    // service('auth')->routes($routes);
    service('auth')->routes($routes, ['except' => ['login']]);
    

    如果您的问题没有得到解决,您可以跟进更多细节并在 Github discussions 中提供最少的代码。

    【讨论】:

      猜你喜欢
      • 2018-04-13
      • 1970-01-01
      • 1970-01-01
      • 2021-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-14
      • 1970-01-01
      相关资源
      最近更新 更多