Как гласит название, функция 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 запутанным. Однако назовите это чем-нибудь еще.