如何解决与后端发送的`file`对象有关的中间件问题?

时间:2019-02-22 02:59:37

标签: php laravel laravel-blade

我的问题是,当我要访问路由时,出现错误403(不允许访问),我必须从对数据库的所有模型进行分组的中间件路由中将其删除,以控制角色和权限,以开发我每个系统用户应该拥有的功能(如下所示)

web.php

<?php

// ACCESO
Route::get('/', 'AccesoController@index');
Route::post('/login', 'AccesoController@login')->name('login');
Route::get('/logout', 'AccesoController@logout')->name('logout');


Route::get('/archivo/archivos_palabra/{idModulo}', 'ArchivoController@index')->name('archivo');

// MODULOS
Route::group(['middleware' => ['verifica_session', 'verifica_permiso']], function () {

    // archivo

    Route::post('/archivo/form', 'ArchivoController@form')->name('archivo.form');
    Route::post('/archivo/save', 'ArchivoController@save')->name('archivo.save');
    Route::post('/archivo/delete', 'ArchivoController@delete')->name('archivo.delete');



});

Kernel.php

中的安装

'verifica_session' => \App\Http\Middleware\verificaSessionMiddleware::class, 
'verifica_permiso' => \App\Http\Middleware\verificaPermisoMiddleware::class,

verificaPermisoMiddleware.php

<?php

namespace App\Http\Middleware;

use Closure;
use Session;

class verificaPermisoMiddleware {
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next) {
        $recurso = substr($request->getPathInfo(), 1);

        $tienePermiso = ($recurso == 'principal' || $recurso == 'perfil');

        if(!$tienePermiso) {
            foreach (session('recursos') as $objetoRecurso) {

                if(starts_with($recurso, $objetoRecurso->nombreRecurso)) {
                    if($objetoRecurso->esMenu) {
                        Session::put('menu-item', ('menu-item-' . $objetoRecurso->nombreRecurso));
                    }
                    $tienePermiso = true;
                    break;
                }
            }
        }
        if($tienePermiso) {
            return $next($request);
        } else {
            abort(403);
        }
    }
}

verificaSessionMiddleware.php

<?php

namespace App\Http\Middleware;

use Closure;

class verificaSessionMiddleware {
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next) {
        if(session('username')) {
            return $next($request);
        } else {
            return redirect('/');
        }

    }
}

我必须通知您,在中间件的路由中我还有其他运行正常的路由,请问如何解决?

0 个答案:

没有答案