laravel5.4 前後臺未登陸,跳轉到各自的頁面
阿新 • • 發佈:2018-08-03
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 前後臺未登陸,跳轉到各自的頁面