alanmburr/laravel-adminer

Adminer(由Jakub Vrana编写)是Laravel 5+的包装器

v4.8.1 2023-11-14 12:52 UTC

This package is auto-updated.

Last update: 2024-09-14 14:45:15 UTC


README

Laravel 10对Adminer的包装器。Adminer是由Jakub Vrana编写的单PHP文件优秀数据库管理工具。它是PhpMyAdmin的绝佳替代品(也支持PostgreSQL、SQLite、MSSQL、Oracle、Firebird、SimpleDB、Elasticsearch和MongoDB)。

注意

此包最初是为Laravel 5构建的,因此一些信息可能已过时。但是,包应该仍然能够正常工作。

用法

要包含库,请转到您的项目文件夹并运行

composer require "alanmburr/laravel-adminer"

要将adminer添加到Laravel路由(例如/adminer),请更新routes/web.php文件

Route::any('adminer', [\AlanMBurr\LaravelAdminer\AdminerController::class, 'index']);

要使用Laravel默认连接自动登录Adminer,请添加以下控制器而不是

Route::any('adminer', [\AlanMBurr\LaravelAdminer\AdminerAutologinController::class, '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_'前缀。

如果您发现任何问题,请告诉我。