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');
    
  • 相关阅读:
    Atitit 人脸识别 眼睛形态 attilax总结
    Atitit 手机号码选号 规范 流程 attilax总结 v2 r99.docx
    atitit 板块分类 上市公司 龙头企业公司 列表 attilax总结.docx
    Atititi atiitt eam pam资产管理 购物表去年.xlsx
    使用cmd查看电脑连接过的wifi密码(一)
    常见十大web攻击手段 悟寰轩
    常见web攻击方式 悟寰轩
    【MYSQL数据库】MYSQL学习笔记mysql分区基本操作 悟寰轩
    Filter及FilterChain的使用详解 悟寰轩
    启动tomcat spring初始化两次问题(eg:@PostConstruct) 悟寰轩
  • 原文地址:https://www.cnblogs.com/lxwphp/p/9412944.html
Copyright © 2011-2022 走看看