Laravel 4: Auth account will not be stored on different pages

Of all the tutorials, I should be able to authenticate the user, and then go to any other page, and the login is saved. This, however, does not work.

Custom compiled PHP LAMP stack. Application storage is writable.

The only difference from the tutorials is that I use email instead of username. http://laravelbook.com/laravel-user-authentication/ http://codehappy.daylerees.com/authentication

Sessions work, since I was able to save var for the session and read it on another page.

models / User.php (stock)

use Illuminate\Auth\UserInterface; use Illuminate\Auth\Reminders\RemindableInterface; class User extends Eloquent implements UserInterface, RemindableInterface { /** * The database table used by the model. * * @var string */ protected $table = 'users'; /** * The attributes excluded from the model JSON form. * * @var array */ protected $hidden = array('password'); /** * Get the unique identifier for the user. * * @return mixed */ public function getAuthIdentifier() { echo $this->getKey(); return $this->getKey(); } /** * Get the password for the user. * * @return string */ public function getAuthPassword() { return $this->password; } /** * Get the e-mail address where password reminders are sent. * * @return string */ public function getReminderEmail() { return $this->email; } } 

configuration / auth.php

 return array( 'driver' => 'eloquent', 'model' => 'User', 'table' => 'users', 'reminder' => array( 'email' => 'emails.auth.reminder', 'table' => 'password_reminders', 'expire' => 60, ), ); 

configuration / session.php

 return array( 'driver' => 'native', 'lifetime' => 120, 'files' => storage_path().'/sessions', 'connection' => null, 'table' => 'sessions', 'lottery' => array(2, 100), 'cookie' => 'laravel_session', 'path' => '/', 'domain' => null, ); 

routes.php

 Route::get('/', array('as' => 'home', function(){ return View::make('home'); })); Route::get('login', array('as' => 'login', function () { return View::make('login'); }))->before('guest'); Route::post('login', function () { $user = array( 'email' => Input::get('email'), 'password' => Input::get('password') ); if (Auth::attempt($user, true)) { /* return Redirect::route('home') ->with('flash_notice', 'You are successfully logged in.'); */ } else { /* // authentication failure! lets go back to the login page return Redirect::route('login') ->with('flash_error', 'Your email/password combination was incorrect.') ->withInput(); */ } // This shows the user as logged in echo (Auth::check()) ? 'Logged in' : 'Not logged in'; }); // This shows the user as not logged in Route::get('test', function () { echo (Auth::check() == true) ? 'Logged in' : 'Not logged in'; }); 

SQL table

 CREATE TABLE IF NOT EXISTS `users` ( `userId` bigint(10) unsigned NOT NULL AUTO_INCREMENT, `email` varchar(250) DEFAULT NULL, `password` varchar(124) DEFAULT NULL, `name` varchar(250) DEFAULT NULL, `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `updated_at` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`userId`), UNIQUE KEY `email` (`email`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ; INSERT INTO `users` (`userId`, `email`, `password`, `name`, `created_at`, `updated_at`) VALUES (1, ' ben.test@smitty.com ', '$2y$10$591gwvQKSGXihKruH1s.weHNM1DR/xzavW46vUuSBxEF7Jk0zZe1G', 'Ben Dauphinee', '2013-08-03 23:25:01', '2013-08-07 01:32:46'), (2, ' jim@dandy.com ', NULL, 'Jim Dandy', '2013-08-03 23:25:01', NULL); 

Resulting Information Auth :: user ()

 User Object ( [table:protected] => users [hidden:protected] => Array ( [0] => password ) [connection:protected] => [primaryKey:protected] => id [perPage:protected] => 15 [incrementing] => 1 [timestamps] => 1 [attributes:protected] => Array ( [userId] => 1 [email] => bookworm51@hotmail.com [password] => $2y$10$591gwvQKSGXihKruH1s.weHNM1DR/xzavW46vUuSBxEF7Jk0zZe1G [name] => Ben Dauphinee [created_at] => 2013-08-03 20:25:01 [updated_at] => 2013-08-06 22:32:46 ) [original:protected] => Array ( [userId] => 1 [email] => bookworm51@hotmail.com [password] => $2y$10$591gwvQKSGXihKruH1s.weHNM1DR/xzavW46vUuSBxEF7Jk0zZe1G [name] => Ben Dauphinee [created_at] => 2013-08-03 20:25:01 [updated_at] => 2013-08-06 22:32:46 ) [relations:protected] => Array ( ) [visible:protected] => Array ( ) [fillable:protected] => Array ( ) [guarded:protected] => Array ( [0] => * ) [touches:protected] => Array ( ) [with:protected] => Array ( ) [exists] => 1 [softDelete:protected] => ) 
+4
source share
3 answers

The problem is that you used "userId" as the primary identifier, but you did not tell Laravel.

In Laravel docs : "Eloquent will also assume that each table has a primary key column named id"

Or

Change userId to id in your table (my personal recommendation is that it will make your life easier if your table always has an identifier)

or add it to the User.php file:

 protected $primaryKey = "userId"; 
+15
source

A copy of your User model would be very helpful.

Can you check the following in the User model.

  • If the User model implements Illuminate \ Auth \ UserInterface. After you implement the above interface, 2 methods must be defined as shown below. Although not registered with Laravel, the Auth driver uses this UserInterface to verify credentials. Take a look at http://laravel.com/api/class-Illuminate.Auth.UserProviderInterface.html

    public function getAuthPassword () {return $ this-> password; }

    public function getAuthIdentifier () {return $ this-> getKey (); }

  • You can check if the password is encrypted in the database. There were times when many developers had a simple password in the password column. Auth::attempt automatically hashes the password using Hash::make() , and then compares it with the value in the users table.

Hope this helps.

+1
source

I had this problem long before that. just change your php version to any version, not version 5.6

0
source

Source: https://habr.com/ru/post/1496316/


All Articles