https://www.imooc.com/wenda/detail/378208?t=266634
laravel我做了前后台登陆,后台未登录跳转到前台登陆页面了。 我想让后台未登入跳转到后台登陆页面,前台未登陆跳转到前台登陆页面。
configauth.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' => AppUser::class, ], 'admins' => [ 'driver' => 'eloquent', 'model' => AppAdminUser::class, ], ], 'passwords' => [ 'users' => [ 'provider' => 'users', 'table' => 'password_resets', 'expire' => 60, ], ],
路由
//登陆页面 Route::get('/login', "AppHttpControllersLoginController@index")->name('login'); //登陆行为 Route::post('/login', "AppHttpControllersLoginController@login"); Route::group(['middleware' => 'auth:web'],function (){ Route::get('/posts', 'AppHttpControllersPostController@index'); } //后台 Route::group(['prefix' => 'admin'], function() { Route::get('/login', 'AppAdminControllersLoginController@index'); Route::post('/login', 'AppAdminControllersLoginController@login'); Route::get('/logout', 'AppAdminControllersLoginController@logout'); Route::group(['middleware' => 'auth:admin'],function (){ Route::get('/home', 'AppAdminControllersHomeController@index'); }); });
遇到的页面跳转问题
解答:
需要在 AppExceptionsHandler.php 文件修改
<?php namespace AppExceptions; use Exception; use IlluminateAuthAuthenticationException; use IlluminateFoundationExceptionsHandler as ExceptionHandler; class Handler extends ExceptionHandler { /** * A list of the exception types that should not be reported. * * @var array */ protected $dontReport = [ IlluminateAuthAuthenticationException::class, IlluminateAuthAccessAuthorizationException::class, SymfonyComponentHttpKernelExceptionHttpException::class, IlluminateDatabaseEloquentModelNotFoundException::class, IlluminateSessionTokenMismatchException::class, IlluminateValidationValidationException::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 IlluminateHttpRequest $request * @param Exception $exception * @return IlluminateHttpResponse */ public function render($request, Exception $exception) { return parent::render($request, $exception); } /** * Convert an authentication exception into an unauthenticated response. * * @param IlluminateHttpRequest $request * @param IlluminateAuthAuthenticationException $exception * @return IlluminateHttpResponse */ 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', 'AppAdminControllersLoginController@index')->name('login');