laravel auth добавить админа - PullRequest
       7

laravel auth добавить админа

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

Привет. Я пытаюсь следовать примеру мульти аутентификации laravel, как показано здесь: я использую laravel 5.6, я думаю, что dev marketer использует 5.2.https://www.youtube.com/watch?v=Ir2nAD9UDGg&t=1930s Итак, мой контроллер администратора выглядит следующим образом:

Проблема в том, что если я перехожу на: localhost/site1/admin
Я получаю ошибку в браузере

«Эта страница не работает, localhost перенаправлял вас слишком много раз. Попробуйте очистить ваши куки. ERR_TOO_MANY_REDIRECTS»

Я полагаю, это говорит о том, что он застрял в каком-то цикле перенаправления ???

Если я закомментирую конструктор, он перейдет на страницу администратора без входа в систему, что явно нехорошо.

Я также добавил функцию в: handler.php, как показано ниже:

<?php
namespace App\Http\Controllers\Auth;


use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Auth;

class AdminLoginController extends Controller
{
    protected $guard = 'admin';
    use AuthenticatesUsers;


    public function __construct()
    {
        $this->middleware('auth:admin')->except('logout');
    }

    protected function guard()
    {
        return Auth::guard('admin');
    }

    /**
     * Show the application dashboard.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        //return view('auth/admin');
        return view('auth/admin');
    }

    public function showLoginForm()
    {
        return view('auth.admin-login');
    }

    public function login( Request $request )
    {
        // validate form
        $this->validate( $request , [
            'email'     =>  'required|email',
            'password'  =>  'required|min:6'
        ]);

        // attempt login
        if (Auth::guard('admin')->attempt(['email'=>$request->email,'password'=>$request->password])) {
            // if successful goto intended page
            return redirect()->intended(route('admin.dashboard'));
        }

        // unsuccessful - redirect.
        return redirect()->back()->withInput( $request->only('email','remember'));
    }
}

Handler.php

public function unauthenticated($request, AuthenticationException $exception)
{
    if($request->expectsJson()) {
        return response()->json(['error'=>'Unauthenticated' , 401 ]);
    }

    $guard = array_get( $exception->guards(),0);

    switch($guard) {
        case 'admin':
            $login='admin.login';  break;
        default:
            $login ='login'; break;
    }

    return redirect()->guest(route( $login ));
}

Также не уверен, что это уместно или полезно - но если я закомментирую функцию unauthenticated () в handler.php, он перенаправит на стандартный вход/ вместо нового входа администратора.и сохранение функции дает мне «страница не перенаправляет должным образом» в Firefox

1 Ответ

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

думаю, я решил это ... в обработчике я изменил перенаправление на:

    case 'admin':
        if(Auth::guard($guard)->check()) {
            return redirect()->route('admin/dashboard');
        }
    break;

В RedirectIfAuthenticated:

    case 'admin':
        if(Auth::guard($guard)->check()) {
            return redirect()->route('admin/dashboard');
        }
    break;

В маршрутах добавлено Middleware:

Route::get('/'          , 'Auth\AdminLoginController@index')->name('admin.dashboard')->middleware('auth:admin');

В административном контроллере я прокомментировал конструктор:

//    public function __construct()
  //  {
    //    $this->middleware('auth:admin')->except('logout');
   // }

Я изменил:

return redirect()->guest(route( $login ));

На:

return redirect()->to( $login );

Это похоже на работу - будьэто "официальный" способ решить это, я не уверен !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...