zoukankan      html  css  js  c++  java
  • laravel5.4 前后台未登陆,跳转到各自的页面

    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');
    
  • 相关阅读:
    Vagrant命令
    您必须知道的 Git 分支开发规范
    phpstorm的提速设置
    Flex 布局教程:语法篇
    Bootstrap 3 & 4 的多级下拉菜单示例
    申请快递查询100接口
    vue.js组件与组件之间的通信
    MAMP环境下 cookie无法正常使用
    Git 常用命令
    Linux学习笔记之yum安装mysql5.7
  • 原文地址:https://www.cnblogs.com/lxwphp/p/9412944.html
Copyright © 2011-2022 走看看