Я только начал работать с летним проектом Laravel для моей стипендии, и основной путь, препятствующий прогрессу, мешает. Любая помощь будет принята с благодарностью. Рассказ ниже.Laravel Login/User Issue with Remember Token
После Laravel запущена и работает, и я пытаюсь войти, я получаю эту ошибку:
Class User contains 3 abstract methods and must therefore be declared abstract or
implement the remaining methods
(Illuminate\Auth\UserInterface::getRememberToken,
Illuminate\Auth\UserInterface::setRememberToken,
Illuminate\Auth\UserInterface::getRememberTokenName)
Я полагал, что это может быть исправлено с помощью http://laravel.com/docs/upgrade#upgrade-4.1.26 и поэтому я добавил следующие строки в мой пользователь как было предложено:
public function getRememberToken(){ return $this->remember_token; }
public function setRememberToken($value){ $this->remember_token = $value; }
public function getRememberTokenName(){ return 'remember_token'; }
Это избавившись от ошибок, но я до сих пор не могу войти. Я буду использовать правильную информацию, но это, кажется, перенаправить меня обратно на страницу входа в систему. После дальнейших исследований я обнаружил, что мне может понадобиться поле [b] remember_token [/ b] в моей базе данных. Я попытался добавить это и remigrate, добавив:
$table->rememberToken();
[edit 2014-09-16, 07:05: added parens. they were in my code but forgotten in the post]
Но что произвел этот StackTrace:
PHP Fatal error: Call to undefined method Illuminate\Database\Schema\Blueprint::rememberToken() in /vagrant/www/vfamatching.dev/app/database/migrations/2013_11_01_033240_create_users_table.php on line 24
PHP Stack trace:
PHP 1. {main}() /vagrant/www/vfamatching.dev/artisan:0
PHP 2. Symfony\Component\Console\Application->run() /vagrant/www/vfamatching.dev/artisan:59
PHP 3. Symfony\Component\Console\Application->doRun() /vagrant/www/vfamatching.dev/vendor/symfony/console/Symfony/Component/Console/Application.php:121
PHP 4. Symfony\Component\Console\Application->doRunCommand() /vagrant/www/vfamatching.dev/vendor/symfony/console/Symfony/Component/Console/Application.php:191
PHP 5. Illuminate\Console\Command->run() /vagrant/www/vfamatching.dev/vendor/symfony/console/Symfony/Component/Console/Application.php:893
PHP 6. Symfony\Component\Console\Command\Command->run() /vagrant/www/vfamatching.dev/vendor/laravel/framework/src/Illuminate/Console/Command.php:96
PHP 7. Illuminate\Console\Command->execute() /vagrant/www/vfamatching.dev/vendor/symfony/console/Symfony/Component/Console/Command/Command.php:244
PHP 8. Illuminate\Database\Console\Migrations\MigrateCommand->fire() /vagrant/www/vfamatching.dev/vendor/laravel/framework/src/Illuminate/Console/Command.php:108
PHP 9. Illuminate\Database\Migrations\Migrator->run() /vagrant/www/vfamatching.dev/vendor/laravel/framework/src/Illuminate/Database/Console/Migrations/MigrateCommand.php:67
PHP 10. Illuminate\Database\Migrations\Migrator->runMigrationList() /vagrant/www/vfamatching.dev/vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php:84
PHP 11. Illuminate\Database\Migrations\Migrator->runUp() /vagrant/www/vfamatching.dev/vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php:113
PHP 12. CreateUsersTable->up() /vagrant/www/vfamatching.dev/vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php:137
PHP 13. Illuminate\Support\Facades\Schema::create() /vagrant/www/vfamatching.dev/app/database/migrations/2013_11_01_033240_create_users_table.php:25
PHP 14. Illuminate\Support\Facades\Facade::__callStatic() /vagrant/www/vfamatching.dev/app/database/migrations/2013_11_01_033240_create_users_table.php:25
PHP 15. Illuminate\Database\Schema\Builder->create() /vagrant/www/vfamatching.dev/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php:209
PHP 16. CreateUsersTable->{closure:/vagrant/www/vfamatching.dev/app/database/migrations/2013_11_01_033240_create_users_table.php:15-25}() /vagrant/www/vfamatching.dev/vendor/laravel/framework/src/Illuminate/Database/Schema/Builder.php:91
{"error":{"type":"Symfony\\Component\\Debug\\Exception\\FatalErrorException","message":"Call to undefined method Illuminate\\Database\\Schema\\Blueprint::rememberToken()","file":"\/vagrant\/www\/vfamatching.dev\/app\/database\/migrations\/2013_11_01_033240_create_users_table.php","line":24}}[email protected]:/vagrant/www/
[редактировать 2014-09-16, 07:05: попробовал ответ смотрителя] После ответа смотрителя прошлой ночью я попытался использовать их решение, заменив
$table->rememberToken(); with
$table->string('remember_token', 100);
миграция больше не выдает ошибку, но до сих пор висит Войти. Кроме того, я должен отметить, что Laravel рекомендует использовать синтаксис rememberToken
Мой Войти маршрут
Route::get('login', array('as' => 'login', function() { return View::make('login'); }))->before('guest');
Route::post('login', '[email protected]');
и метод управления
public function login()
{
$user = array(
'email' => Input::get('email'),
'password' => Input::get('password')
);
if (Auth::attempt($user)) {
Auth::user()->login();
Auth::user()->lastLogin = Carbon::now();
Auth::user()->save();
if (Session::has('returnUrl'))
{
$intendedDestination = Session::get('returnUrl');
Session::forget('returnUrl');
return Redirect::to($intendedDestination)
->with('flash_success', 'You are successfully logged in.');
}
return Redirect::to('/')
->with('flash_success', 'You are successfully logged in.');
}
// authentication failure! lets go back to the login page
return Redirect::route('login')
->with('flash_error', 'Your username/password combination was incorrect.')
->withInput();
}
Миграция больше не выдает ошибку, но до сих пор висит Войти.Кроме того, я должен указать, что Laravel рекомендует использовать синтаксис 'rememberToken' – merlinpatt
Если у вас есть прямой доступ к таблице, вы можете попытаться выполнить регистрацию' $ value' и сохранить столбец 'remember_token' для пользователя после попытки регистрации in. –
Итак, я обнаружил, что метод rememberToken предназначен только для 4.2 и выше, что их документы не делают очень ясным. (Источник: http://stackoverflow.com/questions/23242533/laravel-redirect-with-logout-not-working) – merlinpatt