• laravel5.4 前后台未登陆,跳转到各自的页面


    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');
    
  • 相关阅读:
    BZOJ.2199.[USACO2011 Jan]奶牛议会(2-SAT)
    BZOJ.1997.[HNOI2010]Planar(2-SAT)
    POJ.3648.Wedding(2-SAT)
    POJ.3678.Katu Puzzle(2-SAT)
    POJ.3207.Ikki's Story IV-Panda's Trick(2-SAT)
    洛谷.4180.[模板]次小生成树Tree(Kruskal LCA 倍增)
    BZOJ.4766.文艺计算姬(Prufer)
    zabbix 微信告警机制
    网络地址
    tcp与udp的区别
  • 原文地址:https://www.cnblogs.com/lxwphp/p/15454110.html
Copyright © 2020-2023  润新知