1. 程式人生 > >laravel5.4 前後臺未登陸,跳轉到各自的頁面

laravel5.4 前後臺未登陸,跳轉到各自的頁面

post eight res token fault number ssi eset www

https://www.imooc.com/wenda/detail/378208?t=266634

laravel我做了前後臺登陸,後臺未登錄跳轉到前臺登陸頁面了。 我想讓後臺未登入跳轉到後臺登陸頁面,前臺未登陸跳轉到前臺登陸頁面。

config\auth.php
添加guards中的admin和providers中的admins

<?php
‘defaults‘ => [
    ‘guard‘ => ‘web‘,
    ‘passwords‘ => ‘users‘,
],
‘guards‘ => [
    ‘web‘ => [
        ‘driver‘ => ‘session‘,
        ‘provider‘ => ‘users‘,
    ],
 
    ‘api‘ => [
        ‘driver‘ => ‘token‘,
        ‘provider‘ => ‘users‘,
    ],
 
    ‘admin‘ => [
        ‘driver‘ => ‘session‘,
        ‘provider‘ => ‘admins‘,
    ],
],
‘providers‘ => [
    ‘users‘ => [
        ‘driver‘ => ‘eloquent‘,
        ‘model‘ => App\User::class,
    ],
 
    ‘admins‘ => [
        ‘driver‘ => ‘eloquent‘,
        ‘model‘ => App\AdminUser::class,
    ],
],
‘passwords‘ => [
    ‘users‘ => [
        ‘provider‘ => ‘users‘,
        ‘table‘ => ‘password_resets‘,
        ‘expire‘ => 60,
    ],
],

路由

//登陸頁面
Route::get(‘/login‘, "\App\Http\Controllers\LoginController@index")->name(‘login‘);
//登陸行為
Route::post(‘/login‘, "\App\Http\Controllers\LoginController@login");
Route::group([‘middleware‘ => ‘auth:web‘],function (){
    Route::get(‘/posts‘, ‘\App\Http\Controllers\PostController@index‘);
}
//後臺
Route::group([‘prefix‘ => ‘admin‘], function() {
 
    Route::get(‘/login‘, ‘\App\Admin\Controllers\LoginController@index‘);
    Route::post(‘/login‘, ‘\App\Admin\Controllers\LoginController@login‘);
    Route::get(‘/logout‘, ‘\App\Admin\Controllers\LoginController@logout‘);
 
    Route::group([‘middleware‘ => ‘auth:admin‘],function (){
        Route::get(‘/home‘, ‘\App\Admin\Controllers\HomeController@index‘);
    });
 
});

遇到的頁面跳轉問題

解答:

需要在 App\Exceptions\Handler.php 文件修改

<?php
 
namespace App\Exceptions;
 
use Exception;
use Illuminate\Auth\AuthenticationException;
use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;
 
class Handler extends ExceptionHandler
{
    /**
     * A list of the exception types that should not be reported.
     *
     * @var array
     */
    protected $dontReport = [
        \Illuminate\Auth\AuthenticationException::class,
        \Illuminate\Auth\Access\AuthorizationException::class,
        \Symfony\Component\HttpKernel\Exception\HttpException::class,
        \Illuminate\Database\Eloquent\ModelNotFoundException::class,
        \Illuminate\Session\TokenMismatchException::class,
        \Illuminate\Validation\ValidationException::class,
    ];
 
    /**
     * Report or log an exception.
     *
     * This is a great spot to send exceptions to Sentry, Bugsnag, etc.
     *
     * @param  \Exception  $exception
     * @return void
     */
    public function report(Exception $exception)
    {
        parent::report($exception);
    }
 
    /**
     * Render an exception into an HTTP response.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Exception  $exception
     * @return \Illuminate\Http\Response
     */
    public function render($request, Exception $exception)
    {
        return parent::render($request, $exception);
    }
 
    /**
     * Convert an authentication exception into an unauthenticated response.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Illuminate\Auth\AuthenticationException  $exception
     * @return \Illuminate\Http\Response
     */
    protected function unauthenticated($request, AuthenticationException $exception)
    {
        if ($request->expectsJson()) {
            return response()->json([‘error‘ => ‘Unauthenticated.‘], 401);
        }
 
        if (in_array(‘admin‘, $exception->guards())) {
            return redirect()->guest(‘/admin/login‘);
        }
 
        #return redirect()->guest(route(‘login‘));
    return redirect()->guest(route(‘/‘));   #親測可行
} }

解答2:

後端路由 加上

Route::get(‘/login‘, ‘\App\Admin\Controllers\LoginController@index‘)->name(‘login‘);

laravel5.4 前後臺未登陸,跳轉到各自的頁面