Пытаться

аюсь перенаправить пользователя обратно на страницу входа, если его сеанс истек. Я использую Laravel 5.5. Я отредактировал мойRedirectIfAuthenticated файл, чтобы включить следующий код вhandle функция:

if (!Auth::check()) {
    return redirect()->route('login', ['account' => 'demo']);
}

Когда я делаю это, я получаю следующее сообщение об ошибке:

Отсутствуют обязательные параметры для [Route: login] [URI: /].

мойlogin Маршрут находится внутри поддоменовой группы маршрутов, поэтому я прохожуaccount параметр. Вот часть моего кода вweb.php

// Subdomain routing
Route::domain('{account}.ems.dev')->group(function () {
    Route::get('/', '[email protected]')->name('login');
}

А вот мой[email protected] код:

/*
 * Show the login form
 */
public function show($account) {
    // Validate this is a valid subdomain
    $organization = Organization::where('subdomain', $account)->first();

    if ($organization) { 
        return view('login');
    } else {
        return 'This account does not exist.';
    }
}

Ничто из того, что я пробовал, не работает. Я получаю одно и то же сообщение об ошибке, хотя я передаю необходимые параметры.

Обновление № 1

Скриншот страницы ошибки:

Обновление № 2

После небольшого копания вокругУпс! страница ошибки, я вижу это,protected function unauthenticated это то, что вызывает проблему:

Как мне переопределить эту функцию, чтобы добавить отсутствующий параметр?

 three313 нояб. 2017 г., 23:13
@AndriySushchyk Да, я пробовал это, но все еще получал то же самое сообщение об ошибке. Есть другие мысли / предложения?
 three313 нояб. 2017 г., 23:19
@Camilo Только что обновил исходный пост, чтобы показать этот код.
 Andriy Sushchyk13 нояб. 2017 г., 23:10
Вы пытались очистить кэш маршрутов?php artisan route:clear
 three314 нояб. 2017 г., 02:27
@Camilo, пожалуйста, проверьте обновленный пост, чтобы увидеть, помогает ли новая информация. Спасибо
 Camilo13 нояб. 2017 г., 23:16
Как[email protected] определены?

Ответы на вопрос(1)

Решение Вопроса

Вы можете переопределитьunauthenticated() метод в вашемapp/Exceptions/Handler.php файл для добавления отсутствующего параметра маршрута.

use Illuminate\Auth\AuthenticationException;

class Handler extends ExceptionHandler
{
    protected function unauthenticated($request, AuthenticationException $exception)
    {
        return $request->expectsJson()
                    ? response()->json(['message' => $exception->getMessage()], 401)
                    : redirect()->guest(route('login', ['account' => $request->route('account')]));
    }
}
 Camilo14 нояб. 2017 г., 04:54
Пытаться$request->route('account').
 three314 нояб. 2017 г., 03:36
Я только что попробовал это, и это перенаправляет меня наhttps://ems.dev:8888/, Это просто удаляет поддомен. Любые другие предложения? Мы близки к тому, чтобы понять это :)
 three314 нояб. 2017 г., 03:21
Круто, больше нет сообщений об ошибках! Однако есть одна небольшая проблема. Значениеaccount отличается для каждого пользователя в моей системе. Как я могу получитьaccount с URL для правильного перенаправления? Например, если URL-адрес пользователя для входаacme.ems.dev как мне получитьacme часть, так что он будет перенаправлен наих экран входа?
 three314 нояб. 2017 г., 02:57
Спасибо. Я сделал это, и теперь я получаю новое сообщение об ошибке (это прогресс :) Новое сообщение об ошибке:ErrorException (E_WARNING) Declaration of App\Exceptions\Handler::unauthenticated($request, App\Exceptions\AuthenticationException $exception) should be compatible with Illuminate\Foundation\Exceptions\Handler::unauthenticated($request, Illuminate\Auth\AuthenticationException $exception).
 Camilo14 нояб. 2017 г., 03:11
Добавлятьuse Illuminate\Auth\AuthenticationException; на вашHandler.php файл.

Ваш ответ на вопрос