自定义路由
更改某些路由
如果你需要自定义处理任何身份验证功能的方式,你可能需要更新路由以指向正确的控制器。
你仍然可以使用 service('auth')->routes()
帮助程序,但你需要传递 except
选项,其中包含要自定义的路由列表
service('auth')->routes($routes, ['except' => ['login', 'register']]);
然后将路由添加到你自定义的控制器
$routes->get('login', '\App\Controllers\Auth\LoginController::loginView');
$routes->get('register', '\App\Controllers\Auth\RegisterController::registerView');
自定义后,使用 spark 路由 命令检查你的路由。
更改命名空间
如果你要覆盖所有身份验证控制器,你可以将命名空间指定为 routes()
帮助程序的一个选项
service('auth')->routes($routes, ['namespace' => '\App\Controllers\Auth']);
这将使用指定的命名空间而不是默认的 Shield 命名空间生成路由。这可以与任何其他选项(如 except
)结合使用。
使用区域设置路由
你可以在路由中使用 {locale}
占位符(请参阅 区域设置检测)。
$routes->group('{locale}', static function($routes) {
service('auth')->routes($routes);
});
以上代码注册了以下路由
+--------+----------------------------------+--------------------+--------------------------------------------------------------------+----------------+---------------+
| Method | Route | Name | Handler | Before Filters | After Filters |
+--------+----------------------------------+--------------------+--------------------------------------------------------------------+----------------+---------------+
| GET | {locale}/register | register | \CodeIgniter\Shield\Controllers\RegisterController::registerView | | toolbar |
| GET | {locale}/login | login | \CodeIgniter\Shield\Controllers\LoginController::loginView | | toolbar |
| GET | {locale}/login/magic-link | magic-link | \CodeIgniter\Shield\Controllers\MagicLinkController::loginView | | toolbar |
| GET | {locale}/login/verify-magic-link | verify-magic-link | \CodeIgniter\Shield\Controllers\MagicLinkController::verify | | toolbar |
| GET | {locale}/logout | logout | \CodeIgniter\Shield\Controllers\LoginController::logoutAction | | toolbar |
| GET | {locale}/auth/a/show | auth-action-show | \CodeIgniter\Shield\Controllers\ActionController::show | | toolbar |
| POST | {locale}/register | register | \CodeIgniter\Shield\Controllers\RegisterController::registerAction | | toolbar |
| POST | {locale}/login | » | \CodeIgniter\Shield\Controllers\LoginController::loginAction | | toolbar |
| POST | {locale}/login/magic-link | » | \CodeIgniter\Shield\Controllers\MagicLinkController::loginAction | | toolbar |
| POST | {locale}/auth/a/handle | auth-action-handle | \CodeIgniter\Shield\Controllers\ActionController::handle | | toolbar |
| POST | {locale}/auth/a/verify | auth-action-verify | \CodeIgniter\Shield\Controllers\ActionController::verify | | toolbar |
+--------+----------------------------------+--------------------+--------------------------------------------------------------------+----------------+---------------+
如果你在 app/Config/Filters.php 文件中设置了全局过滤器,你需要更新 except
的路径
public $globals = [
'before' => [
// ...
'session' => ['except' => ['*/login*', '*/register', '*/auth/a/*', '*/logout']],
],
// ...
];