Auth middleware не перенаправляет на страницу входа - PullRequest
0 голосов
/ 21 сентября 2018

У меня есть ситуация, когда у меня есть маршрут /admin, для которого требуется Auth промежуточное ПО для активации.У меня есть требование промежуточного программного обеспечения, указанное в маршруте web.php.Кроме того, у меня есть настройка по умолчанию auth laravel.У kernel.php тоже есть промежуточное ПО.

Но, как ни странно, /admin выводит меня на белую страницу без ничего.При входе в систему проблема не существует.Это работало, и внезапно это больше не работало.

Промежуточное ПО аутентификации выглядит так:

   <?php

namespace App\Http\Middleware;

use Illuminate\Auth\Middleware\Authenticate as Middleware;

class Authenticate extends Middleware
{
    /**
     * Get the path the user should be redirected to when they are not authenticated.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return string
     */
    protected function redirectTo($request)
    {
        return route('login');
    }
}

Контроллер:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\NewsletterSubscribers;
use App\User;
use File;

class adminController extends Controller
{
    //
    public function __construct()
    {
         $this->middleware('auth');    
        $this->middleware('admin');
    }

    public function index(){

        return view('admin.home');
    }

    public function changebg(){

        return view('admin.changebg');
    }

    public function changebgimage(Request $request){
     $this->validate($request,
    [
     'image'=>'required|image|mimes:jpg,JPG,jpeg,JPEG|max:4096|dimensions:max_width:1600,max_height:1100',
      ]
    );

        $path="images/";
        $imagepath="images/bg.jpg";
        if( File::exists($imagepath))
        {
        unlink($imagepath);
    }

  if ( ! File::exists($path) )
  {
  File::makeDirectory($path,0777,true);
  }
        $getimageName = "bg.jpg";
        $request->image->move(public_path($path), $getimageName);

        return view('admin.home');
    }

    public function newslettersubscriberslist(){

        $newslettersubscribers= NewsletterSubscribers::all();
        $count=0;
        return view('admin.subscriberslist',compact('newslettersubscribers','count'));

    }

    public function registerAdmin(){
        return view('auth.adminregister');
    }

    public function viewAdmins(){

        $admins= User::select('users.*')->where('role','=','admin')->get();
        //print_r($admins);
        $count=0;
        return view('admin.adminlist',compact('admins','count'));
    }

    public function viewUsers(){

        $users= User::select('users.*')->where('role','=','user')->get();
        //print_r($admins);
        $count=0;
        return view('admin.userlist',compact('users','count'));
    }    

}

Промежуточное ПО администратора:

<?php

namespace App\Http\Middleware;

use Closure;
use Auth;

class Admin
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        if (Auth::check() && Auth::user()->role == 'admin') {
            return $next($request);
        }

        else {
            return redirect('/login');
        }
    }
}

маршрут, который я использую:

Route::get('/admin', 'AdminController@index')->name('adminhome')->middleware('auth');

Я не нахожу здесь ничего странного, но достаточно странно, проблема существует.Ребята, вы можете найти что-то необычное здесь или где-то это может быть ??

Ответы [ 2 ]

0 голосов
/ 21 сентября 2018

Вы можете использовать промежуточное программное обеспечение, как это

Route::group(['middleware'=>'auth'], function()
{
  Route::get('/admin', 'AdminController@index')->name('adminhome');
}
0 голосов
/ 21 сентября 2018

Прежде всего, убедитесь, что у вас включен отчет об ошибках.Также взгляните на журнал Laravel.Глядя на ваш код, проблема может быть в случае AdminController.В маршрутах у вас есть 'AdminController@index', но у показанного вами класса есть имя adminController, и оно должно быть AdminController.Я также не знаю, как называется файл, но он должен быть снова AdminController.php

...