Я хочу посетить домашнюю страницу в качестве гостя, но постоянно сталкиваюсь со страницей входа в Laravel

#php #laravel #user-interface #authentication #middleware

Вопрос:

Я снова и снова сталкиваюсь со страницей входа в систему, когда пытаюсь перейти на главную страницу. Я не добавлял никакого промежуточного программного обеспечения в маршрут домашней страницы, но все равно сталкиваюсь с этой проблемой.

Мой Контроллер Входа в систему

 protected $redirectTo = '/';

    public function __construct()
    {
        $this->middleware('guest')->except('logout');
    }

    public function redirectToProvider()
    {
        return Socialite::driver(request()->provider)->redirect();
    }


    public function handleProviderCallback()
    {
        $provider = request()->provider;
        $providerUser = Socialite::driver($provider)->user();
        if($providerUser->getEmail() == null) {
            $user = User::where($provider . '_id', $providerUser->getId())->first();
        } else {
            $user = User::where('email', $providerUser->getEmail())->first();
        }
        if($user amp;amp; $user->$provider . '_id' == null) {
            dd('test');
            $user->update([$provider . '_id' => $providerUser->getId()]);
        }
        if(!$user) {
            $user = User::create([
                'email' => $providerUser->getEmail(),
                'name' => $providerUser->getName(),
                $provider . '_id' => $providerUser->getId(),
            ]);
        }

        auth()->login($user, true);

        return redirect($this->redirectTo);

        // $user->token;
    }

    public function showLoginForm()
    {
        session()->put('previousUrl', url()->previous());

        return view('auth.login');
    }

    public function redirectTo()
    {
        return str_replace(url('/'), '', session()->get('previousUrl', '/'));
    }
 

Я не знаю, в чем проблема-в контроллере или в маршрутах.

Маршруты

 Route::get('/', 'WelcomePageController@index')->name('welcome');
Auth::routes();
Route::get('/login/{provider}', 'AuthLoginController@redirectToProvider');
Route::get('/login/{provider}/callback', 'AuthLoginController@handleProviderCallback');
 

Я могу посетить домашнюю страницу только после входа в систему, но я хочу видеть ее в качестве гостя.

Ответ №1:

Домашний маршрут защищен, вы можете увидеть это в методе построения HomeController. Чтобы сделать его незащищенным, попробуйте прокомментировать строку в методе constrct. Чтобы предотвратить ошибки в главном представлении, вам также необходимо отредактировать это представление.