msadiq/larackfinder

Laravel 的 CKFinder 3 包

安装: 3

依赖: 0

建议者: 0

安全: 0

星标: 1

关注者: 1

分支: 0

开放问题: 0

语言:Blade

dev-master 2023-10-13 10:20 UTC

This package is auto-updated.

Last update: 2024-09-13 12:12:15 UTC


README

CKFinder 3 Package for Laravel 5.5+ Tweet

Laravel version License Packagist Packagist Join newsletter Follow twitter

此仓库包含 Laravel 5.5+ 的 CKFinder 3 包。

安装

  1. 添加 Composer 依赖项并安装包。

    composer require tecdiary/ckfinder-laravel-package
  2. 运行命令下载 CKFinder 代码。

    安装 Laravel 包后,您需要下载 CKFinder 代码。由于不同的许可协议,它不包括在包中。要安装它,请运行以下 artisan 命令

    php artisan ckfinder:download

    它将下载所需的代码并将其放置在包的适当目录中(vendor/ckfinder/ckfinder-laravel-package/)。

  3. 发布 CKFinder 连接器配置和资产。

    php artisan vendor:publish --tag=ckfinder-assets --tag=ckfinder-config

    这将把 CKFinder 资产发布到 public/js/ckfinder,并将 CKFinder 连接器配置发布到 config/ckfinder.php

    如果您需要自定义路由名称、不同的资产位置、文件浏览器自定义等,您也可以发布此包使用的视图。

    php artisan vendor:publish --tag=ckfinder-views

    最后,您可以使用一个命令发布包的配置、资产和视图。

    php artisan vendor:publish --tag=ckfinder
  4. 为 CKFinder 文件创建一个目录并允许对其写入。默认情况下,CKFinder 期望文件位于 public/userfiles(这可以在配置中更改)。

    mkdir -m 777 public/userfiles

    注意:由于通常将权限设置为 0777 是不安全的,建议将目录的组所有权更改为与 Apache 相同的用户,并添加组写权限。如有任何疑问,请联系系统管理员。

  5. CKFinder 默认使用基于 双重提交 cookie 的 CSRF 保护机制。在某些配置中,可能需要配置 Laravel 不加密 CKFinder 设置的 cookie。

    为此,请将 cookie 名称 ckCsrfToken 添加到 EncryptCookies 中间件的 $except 属性中

    // app/Http/Middleware/EncryptCookies.php
    
    namespace App\Http\Middleware;
    
    use Illuminate\Cookie\Middleware\EncryptCookies as Middleware;
    
    class EncryptCookies extends Middleware
    {
        /**
         * The names of the cookies that should not be encrypted.
         *
         * @var array
         */
        protected $except = [
            'ckCsrfToken',
            // ...
        ];
    }

    您还应该禁用 Laravel 的 CSRF 保护,以便 CKFinder 的路径,因为 CKFinder 使用它自己的 CSRF 保护机制。这可以通过将 ckfinder/* 模式添加到 VerifyCsrfToken 中间件的 $except 属性中完成:(app/Http/Middleware/VerifyCsrfToken.php)

    // app/Http/Middleware/VerifyCsrfToken.php
    
    namespace App\Http\Middleware;
    
    use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as Middleware;
    
    class VerifyCsrfToken extends Middleware
    {
        /**
         * The URIs that should be excluded from CSRF verification.
         *
         * @var array
         */
        protected $except = [
            'ckfinder/*',
            // ...
        ];
    }

此时,您应该在导航到 <APP BASE URL>/ckfinder/connector?command=Init 地址后看到连接器 JSON 响应。CKFinder 的身份验证尚未配置,因此您将看到一个错误响应,表明 CKFinder 未启用。

配置身份验证

CKFinder 连接器身份验证由 中间件 类或别名处理。要创建自定义中间件类,请使用 artisan 命令

php artisan make:middleware CustomCKFinderAuth

新的中间件类将出现在 app/Http/Middleware/CustomCKFinderAuth.php 中。更改 config/ckfinder.php 中的 authentication 选项

$config['authentication'] = '\App\Http\Middleware\CustomCKFinderAuth';

CustomCKFinderAuth 类中的 handle 方法允许对 CKFinder 用户进行身份验证。一个基本实现,从 authentication 可调用返回 true(显然不安全),如下所示

public function handle($request, Closure $next)
{
    config(['ckfinder.authentication' => function() {
        return true;
    }]);
    return $next($request);
}

请参阅 CKFinder for PHP 连接器文档 以获取有关此选项的更多信息。

注意:或者,您可以在 config/ckfinder.php 文件中设置配置选项 $config['loadRoutes'] = false;。然后,您将 vendor/ckfinder/ckfinder-laravel-package/src/routes.php 中的路由复制到您的应用程序路由(如 routes/web.php),以使用 Laravel 身份验证中间件保护它们。

Route::any('/ckfinder/connector', '\CKSource\CKFinderBridge\Controller\CKFinderController@requestAction')
    ->name('ckfinder_connector');

Route::any('/ckfinder/browser', '\CKSource\CKFinderBridge\Controller\CKFinderController@browserAction')
    ->name('ckfinder_browser');

配置选项

CKFinder 连接器配置来自 config/ckfinder.php 文件。

要了解更多关于可能的连接器配置选项,请参阅 CKFinder for PHP 连接器文档

用法

该包代码包含一些有用的使用示例。要启用它们,取消注释 vendor/ckfinder/ckfinder-laravel-package/src/routes.php 中的 ckfinder_examples 路由。

// vendor/ckfinder/ckfinder-laravel-package/src/routes.php

Route::any('/ckfinder/examples/{example?}', 'CKSource\CKFinderBridge\Controller\CKFinderController@examplesAction')
    ->name('ckfinder_examples');

之后,您可以导航到 <APP BASE URL>/ckfinder/examples 路径,查看可用的示例列表。要了解它们背后的代码,请检查包中的 views/samples 目录(vendor/ckfinder/ckfinder-laravel-package/views/samples/)。

在模板中包含主 CKFinder JavaScript 文件

为了能够在网页上使用 CKFinder,您必须包含主 CKFinder JavaScript 文件。首选的方法是包含以下所示的 CKFinder 设置模板

@include('ckfinder::setup')

包含的模板会渲染所需的 script 标签并配置一个有效的连接器路径。

<script type="text/javascript" src="/js/ckfinder/ckfinder.js"></script>
<script>
  CKFinder.config({ connectorPath: "/ckfinder/connector" });
</script>

有用的链接