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');