#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. Чтобы предотвратить ошибки в главном представлении, вам также необходимо отредактировать это представление.