doqp87012 2017-03-10 13:48
浏览 91
已采纳

Laravel Auth隐藏重定向

Install new Laravel 5.4 project.

Run php artisan make:auth.

Go to http://localhost:8000/home (without being logged in).

I get redirected to http://localhost:8000/login

This redirect seems like magic. This is the route for home:

|| GET|HEAD |home||App\Http\Controllers\HomeController@index|web,auth|

We never get to the index() method because the auth middleware takes over. I open the auth middleware file Illuminate\Auth\Middleware\Authenticate.php and there's no mention of the /login redirect.

Where is the redirect from /home to /login defined?

  • 写回答

1条回答 默认 最新

  • dongzhang1987 2017-03-10 14:07
    关注

    Check app/Exceptions/Handler.php file and you'll see Exception handler for unauthenticated users:

    protected function unauthenticated($request, AuthenticationException $exception)
    {
        if ($request->expectsJson()) {
            return response()->json(['error' => 'Unauthenticated.'], 401);
        }
    
        return redirect()->guest(route('login'));
    }
    

    P.S. redirect to home you can see in app/Http/Middleware/RedirectIfAuthenticated.php file.

    UPD1: redirect to home after login/register you can set in app/Http/Controllers/Auth/LoginController.php and app/Http/Controllers/Auth/RegisterController.php. It looks like

    protected $redirectTo = '/home';
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
编辑
预览

报告相同问题?