imperat0r / laravel-adminer
为 Laravel 5 设计的 Adminer (Jakub Vrana) 包装器
dev-master
2016-12-07 09:23 UTC
Requires
- php: >=5.4.0
- illuminate/support: 5.*
This package is not auto-updated.
Last update: 2024-09-23 13:06:15 UTC
README
Laravel 5 对 Adminer 的包装。Adminer 是 Jakub Vrana 编写的单PHP文件数据库管理工具,功能强大。它是 PhpMyAdmin 的优秀替代品(同时支持 PostgreSQL、SQLite、MS SQL、Oracle、Firebird、SimpleDB、Elasticsearch 和 MongoDB)。
使用方法
要包含库,请转到您的项目文件夹并运行
composer require "imperat0r/laravel-adminer:dev-master"
要将 adminer 添加到 Laravel 路由(例如 /adminer),请更新 routes.php 文件
Route::any('adminer', '\Miroc\LaravelAdminer\AdminerController@index');
要使用 Laravel 默认连接自动登录 Adminer,请添加以下控制器代替
Route::any('adminer', '\Miroc\LaravelAdminer\AdminerAutologinController@index');
禁用 CSRF 中间件
Adminer 与 VerifyCsrfToken 中间件不兼容,因此需要在路由上禁用它。
Laravel 5.1+
在 VerifyCsrfToken.php 中,通过将 adminer 路由添加到 $except 数组来禁用 CSRF
protected $except = [
'adminer'
];
Laravel 5.0
最简单的方法是创建一个自定义的 VerifyCsrfToken 中间件,以排除选定的路由
use Closure;
use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken;
class CustomVerifyCsrfToken extends VerifyCsrfToken {
protected $excludedRoutes = ['adminer'];
public function handle($request, Closure $next)
{
if ($this->isExcludedRoute($request)){
return $next($request);
} else {
return parent::handle($request, $next);
}
}
private function isExcludedRoute($request)
{
if (count($request->segments()) > 0
&& in_array($request->segment(1), $this->excludedRoutes)){
return true;
} else {
return false;
}
}
}
然后在 Kernel.php 中使用它代替 VerifyCsrfToken
protected $middleware = [
'Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode',
'Illuminate\Cookie\Middleware\EncryptCookies',
'Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse',
'Illuminate\Session\Middleware\StartSession',
'Illuminate\View\Middleware\ShareErrorsFromSession',
'Path\To\CustomVerifyCsrfToken',
];
备注
由于 Laravel5 和 Adminer 的函数名冲突,adminer.php 文件中的 'cookie()'、'redirect()' 和 'view()' 函数前加了 'adm_' 前缀。
如果您发现任何问题,请告诉我。