2015-09-03 2 views
1

Я уже задал этот вопрос, но все же я не получил ответа.аутентификация не работает

How to login using Github, Facebook, Gmail and Twitter in Laravel 5.1?

auth not working


Я могу хранить данные из Gmail, GitHub в базе данных.

Контроллер

if (Auth::attempt(['email' => $email, 'password' => $user_id])) 
{ 
    return redirect()->intended('user/UserDashboard'); 
} 
else 
{ 
    //here i am going to insert if user not logged in already 
    return redirect()->intended('user/UserDashboard'); 
} 

Моя проблема в том, если я эхо любые данные вместо return redirect()->intended('user/UserDashboard'); то он отображает. Если я добавлю перенаправление, это не сработает.

+0

код вы вывесили для стандартной аутентификации Laravel, а не [Светская] (http://laravel.com/docs/5.1/authentication#social-authentication) ... – Jeemusu

+0

Если вы удаляете '&& Auth :: user() -> role === 'user'', это работает? Или попробуйте dd (Auth :: user()) на другом маршруте, чтобы убедиться, что сеанс не пропадет. Какой драйвер сеанса вы используете? – Jeemusu

ответ

2

Я не совсем уверен, как это работает при использовании Google для OAuth, но я полагаю, ваш желаемый поток:

  1. возвращает пользователя от Google.
  2. Проверьте, существует ли пользователь, иначе создайте новую запись пользователя.
  3. Зарегистрировать пользователя.
  4. Перенаправление на приборную панель.

Предполагая, что вышеуказанные методы будут выглядеть примерно так.

Контроллер

public function google() 
{ 
    // Redirect user to google for authentication 
    return Socialite::driver('google')->redirect(); 

    // In Laravel 5.0 this would be 
    // return Socialize::with('google')->redirect(); 
} 

public function googleCallback() 
{ 
    // Return from google with user object 
    $googleUser = Socialite::driver('google')->user(); 

    // In Laravel 5.0 the above would be 
    // $user = Socialize::with('google')->user(); 

    // If user exists, retrieve the first() record, 
    // otherwise create a new record 
    $user = User::firstOrCreate([ 
     'user_id' => $googleUser->id, 
     'name'  => $googleUser->name, 
     'password' => $googleUser->id, 
     'email' => $googleUser->email, 
     'avatar' => $googleUser->avatar 
    ]); 

    // Login the user 
    Auth::login($user, true); 

    // Redirect to the dashboard 
    return Redirect::intended('user/UserDashboard'); 
} 
+0

@ jeemusu.nnow Я получаю error.Undefined свойство: App \ Http \ Controllers \ UserController :: $ socialite – vision

+0

@tester Извините, я использовал инъекцию зависимостей, но не включил класс '__construct()', я обновил свой ответ на используйте Фасады. – Jeemusu

+0

@ Jeemusu.i treid that, но он перенаправляется на login only.in url браузера он генерирует # конец URL-адреса http: // localhost/demo/public/login # – vision

Смежные вопросы