【发布时间】: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