framework: [8.72.0] Method Illuminate\Auth\RequestGuard::getRecallerName does not exist.

  • Laravel Version: 8.72.0
  • PHP Version: 8.0.3
  • Database Driver & Version: MySQL5.7.24

Description:

Upgrade from Laravel v8.71.0 to 8.72.0 seems to contain a breaking change in src/Illuminate/Routing/SortedMiddleware.php (line 104 to line 111)

https://github.com/laravel/framework/blob/5168f8589195a5f48b9c41ad2eec77a6c15f14f3/src/Illuminate/Routing/SortedMiddleware.php#L104-L111

https://github.com/laravel/framework/compare/v8.71.0...v8.72.0

Trying to impersonate a User now returns a Session Guard error: Method Illuminate\Auth\RequestGuard::getRecallerName does not exist.

https://github.com/404labfr/laravel-impersonate/issues/145

Steps To Reproduce:

This issue should be closed if you think the issue lays with that package (that hasn’t been updated recently), but I thought it was worth mentioning as it could potentially affect other official packages using Sessions, like Jetstream or Breeze.

About this issue

  • Original URL
  • State: closed
  • Created 3 years ago
  • Comments: 15 (6 by maintainers)

Most upvoted comments

@peterfox Got the same problem with Jetstream/Inertia stack on Laravel 9. PR #41429 solves the problem in my case.

I’m oddly receiving this at the moment. It happens with a Jetstream/Livewire app. It happens after not using the site for a while but still being logged in, you go to load a page and it fails. Refreshing the page again quickly after is then fine. Unsure how to demo the issue as it’s fairly specific.

I’m experiencing the same, although I haven’t found the issue just yet. It happens quite randomly 🤷‍♂️ I’m still looking for the cause. If someone has some pointers on where to look let me know 🙌

Stacktrace:

BadMethodCallException Method Illuminate\Auth\RequestGuard::getRecallerName does not exist. 
    vendor/laravel/framework/src/Illuminate/Macroable/Traits/Macroable.php:113 Illuminate\Auth\RequestGuard::__call
    vendor/laravel/framework/src/Illuminate/Auth/AuthManager.php:336 Illuminate\Auth\AuthManager::__call
    vendor/laravel/framework/src/Illuminate/Session/Middleware/AuthenticateSession.php:43 Illuminate\Session\Middleware\AuthenticateSession::handle
    vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:167 Illuminate\Pipeline\Pipeline::Illuminate\Pipeline\{closure}
    vendor/laravel/framework/src/Illuminate/Auth/Middleware/Authenticate.php:44 Illuminate\Auth\Middleware\Authenticate::handle
    vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:167 Illuminate\Pipeline\Pipeline::Illuminate\Pipeline\{closure}
    vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php:49 Illuminate\View\Middleware\ShareErrorsFromSession::handle
    vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:167 Illuminate\Pipeline\Pipeline::Illuminate\Pipeline\{closure}
    vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php:121 Illuminate\Session\Middleware\StartSession::handleStatefulRequest
    vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php:64 Illuminate\Session\Middleware\StartSession::handle
    vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:167 Illuminate\Pipeline\Pipeline::Illuminate\Pipeline\{closure}
    vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php:37 Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::handle
    vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:167 Illuminate\Pipeline\Pipeline::Illuminate\Pipeline\{closure}
    vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php:67 Illuminate\Cookie\Middleware\EncryptCookies::handle
    vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:167 Illuminate\Pipeline\Pipeline::Illuminate\Pipeline\{closure}
    vendor/torchlight/torchlight-laravel/src/Middleware/RenderTorchlight.php:23 Torchlight\Middleware\RenderTorchlight::handle
    vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:167 Illuminate\Pipeline\Pipeline::Illuminate\Pipeline\{closure}
    vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:103 Illuminate\Pipeline\Pipeline::then
    vendor/laravel/framework/src/Illuminate/Routing/Router.php:697 Illuminate\Routing\Router::runRouteWithinStack
    vendor/laravel/framework/src/Illuminate/Routing/Router.php:672 Illuminate\Routing\Router::runRoute
    vendor/laravel/framework/src/Illuminate/Routing/Router.php:636 Illuminate\Routing\Router::dispatchToRoute
    vendor/laravel/framework/src/Illuminate/Routing/Router.php:625 Illuminate\Routing\Router::dispatch
    vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php:167 Illuminate\Foundation\Http\Kernel::Illuminate\Foundation\Http\{closure}
    vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:128 Illuminate\Pipeline\Pipeline::Illuminate\Pipeline\{closure}
    vendor/livewire/livewire/src/DisableBrowserCache.php:19 Livewire\DisableBrowserCache::handle
    vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:167 Illuminate\Pipeline\Pipeline::Illuminate\Pipeline\{closure}
    vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php:21 Illuminate\Foundation\Http\Middleware\TransformsRequest::handle
    vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php:31 Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::handle
    vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:167 Illuminate\Pipeline\Pipeline::Illuminate\Pipeline\{closure}
    vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php:21 Illuminate\Foundation\Http\Middleware\TransformsRequest::handle
    vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php:40 Illuminate\Foundation\Http\Middleware\TrimStrings::handle
    vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:167 Illuminate\Pipeline\Pipeline::Illuminate\Pipeline\{closure}
    vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php:27 Illuminate\Foundation\Http\Middleware\ValidatePostSize::handle
    vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:167 Illuminate\Pipeline\Pipeline::Illuminate\Pipeline\{closure}
    vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php:86 Illuminate\Foundation\Http\Middleware\PreventRequestsDuringMaintenance::handle
    vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:167 Illuminate\Pipeline\Pipeline::Illuminate\Pipeline\{closure}
    vendor/fruitcake/laravel-cors/src/HandleCors.php:38 Fruitcake\Cors\HandleCors::handle
    vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:167 Illuminate\Pipeline\Pipeline::Illuminate\Pipeline\{closure}
    vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php:39 Illuminate\Http\Middleware\TrustProxies::handle
    vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:167 Illuminate\Pipeline\Pipeline::Illuminate\Pipeline\{closure}
    vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:103 Illuminate\Pipeline\Pipeline::then
    vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php:142 Illuminate\Foundation\Http\Kernel::sendRequestThroughRouter
    vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php:111 Illuminate\Foundation\Http\Kernel::handle
    public/index.php:52 [main]

Edit I’ve been able to replicate the issue via the following steps:

  1. In your session.php config, set 'expire_on_close' => true,
  2. Visit your application and log in.
  3. Close your browser.
  4. Open your browser and visit your application URL, you will now get the error.