Как гласит название, функция Laravel Auth::attempt() возвращает true в следующем разделе кода (с несущественными деталями):
public function doLogin() { $validator = [..] if ($validator->fails()) { [..] } else { $userdata = array( 'username' => Input::get('username'), 'password' => Input::get('password') ); if (Auth::attempt($userdata, true)) { return Redirect::to('/'); } else { return Redirect::to('login'); } } }
Но когда мы перенаправлены, мы пытаемся проверить, действительно ли пользователь зарегистрирован в Auth::check() , и он как-то возвращает false .
Мы пробовали все возможные решения в Google и не добились успеха ни с одним из них. Например, мы добавили remember_token но ничего не изменили, хотя доказали, что Auth::attempt() что-то делает, потому что remember_token установлен в базе данных.
В крайнем случае мы даже пытались напечатать что-то в методе Auth::attempt() Laravel в ./vendor/laravel/framework/src/Illuminate/Auth/Guard.php но мы ничего не увидели, а не даже с print_r . Мы попытались найти другие попытки-функции в полной базе кода, но никто не найден.
Возможно, что-то об изменении User в переведенной форме делает его сломанным, но тогда функция Auth::attempt() также должна быть сломана, возможно.
Кажется, что происходит что-то действительно волшебное, но мы понятия не имеем, что и как. Есть ли у кого-нибудь еще идея?
По умолчанию Laravel предполагает, что каждая таблица имеет первичный ключ с именем id.
Возможное решение – сделать это в вашей модели:
protected $primaryKey = 'id'; //Or what ever id name do you have.
Эта ошибка может возникнуть, если вы пытаетесь использовать laravel-mongodb с пользовательским приращением и уникальным сгенерированным идентификатором, а не по умолчанию _id от MongoDB. Решение в этом случае не должно указывать ваш пользовательский идентификатор, как этот «id», потому что это сделает Laravel запутанным. Однако назовите это чем-нибудь еще.