Вызов защищенного метода App \ Http \ Middleware \ Admin :: handle () из контекста 'Подсветка \ Конвейер \ Конвейер' - PullRequest
0 голосов
/ 23 октября 2018

Я действительно новичок в Laravel.Я пытаюсь создать страницу, следуя инструкциям на YouTube.Все идет хорошо, внезапно возникла ошибка в вызове для защиты метода от конвейера контекста.Я пытаюсь найти в Stackoverflow эту ошибку, но не могу.Я надеюсь, что кто-нибудь может помочь мне сказать, в чем именно проблема.ниже я прилагаю свой код;

Маршрут:

Route::get('/','Adminauth\AuthController@showLoginForm');
Route::post('login','Adminauth\AuthController@login');
Route::group(array('middleware'=>'Admin'),function(){
Route::get('/dashboard','Admin\AdminControll@dashboard');
Route::get('/logout','Adminauth\AuthController@logout');
});
Route::get('/create',function(){
    App\User::create([
         'name' => 'sara',
         'username'=>'sara',
         'email' => 'sara@yahoo.com.my',
         'password' => bcrypt('******'),
            ]);
});

В папке есть два контроллера Admin и Adminauth. Контроллер администратора:

<?php

namespace App\Http\Controllers\Admin;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;

class AdminControll extends Controller
{
   public function __construct ()
   {
    $this->middleware('Admin');
   }
   public function dashboard()
   {
    return view('Admin.layout');
   }
}

AuthController

<?php

namespace App\Http\Controllers\Adminauth;

use App\User;
use Validator;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\ThrottlesLogins;
use Illuminate\Foundation\Auth\RegistersUsers;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Auth;

class AuthController extends Controller
{
    use RegistersUsers, ThrottlesLogins;
    protected $redirecTo = '/dashboard';
    protected $guard = 'Admin';
    public Function showLoginForm()
    {
        if(Auth::guard('Admin')->check())
        {
            return redirect('/dashboard');
        }
        return view ('login');

    }
    public function logout(){
        Auth::guard('Admin')->logout();
        return redirect('/');
    }
}

Middleware (Admin.php)

<?php

namespace App\Http\Middleware;

use Closure;

use Illuminate\Http\Request;

use Illuminate\Support\Facades\Auth;

class Admin
{
    /**
     * Get the path the user should be redirected to when they are not authenticated.
     * @param  mixed
     * @param  \Closure $next
     * @param  \Illuminate\Http\Request  $request
     * @return string|null $guard
     */
    protected function handle($request,Closure $next,$guard = 'Admin')
    {
        if(!Auth::guard($guard)->check()){
return redirect('/');
        }
 return $next($request);
}
    }

kernel.php

   */
    protected $routeMiddleware = [
        'auth' => \App\Http\Middleware\Authenticate::class,
        'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
        'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
        'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
        'can' => \Illuminate\Auth\Middleware\Authorize::class,
        'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
        'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
        'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
        'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
        'Admin' => \App\Http\Middleware\Admin::class,
    ];
}

Ответы [ 2 ]

0 голосов
/ 23 октября 2018

В вашем Middleware(Admin.php) установите для метода handle видимость public.

Laravel не может получить доступ к методу handle вне класса Admin, поскольку он установлен на protected.

0 голосов
/ 23 октября 2018

Метод handle() должен быть публичным, например:

public function handle($request,Closure $next,$guard = 'Admin')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...