无法使用不同的表进行身份验证

时间:2013-07-01 11:11:12

标签: authentication laravel laravel-4

我已更改auth.php文件,以便根据 authors 表对我的用户进行身份验证。但是当我正在运行test路线时,我一直在没有帐号

auth.php

<?php

return array(

    'driver' => 'eloquent',

    'model' => 'Author',

    'table' => 'authors',

    'reminder' => array(

        'email' => 'emails.auth.reminder', 'table' => 'password_reminders',

    ),

);

routes.php文件

Route::get('test', function() {
    $credentials = array('username' => 'giannis',
        'password' => Hash::make('giannis'));
    if (Auth::attempt($credentials)) {
        return "You are a user.";
    }
    return "No account for you";
});

AuthorsTableSeeder.php

<?php

class AuthorsTableSeeder extends Seeder {

    public function run()
    {
        // Uncomment the below to wipe the table clean before populating
      DB::table('authors')->delete();

      $authors = array(
         [ 
         'username' => 'giannis',
         'password' => Hash::make('giannis'),
         'name' => 'giannis',
         'lastname' => 'christofakis'],
         [
         'username' => 'antonis',
         'password' => Hash::make('antonis'),
         'name' => 'antonis',
         'lastname' => 'antonopoulos']
         );

        // Uncomment the below to run the seeder
      DB::table('authors')->insert($authors);
  }

}

附录


我在另一篇文章中看到,您必须实现UserInterface RemindableInterface接口。但结果是一样的。

Author.php

<?php

use Illuminate\Auth\UserInterface;
use Illuminate\Auth\Reminders\RemindableInterface;

class Author extends Eloquent implements UserInterface, RemindableInterface {

    protected $guarded = array();

    public static $rules = array();

    public function posts() {
        return $this->hasMany('Post');
    }

    /**
         * Get the unique identifier for the user.
         *
         * @return mixed
         */
    public function getAuthIdentifier()
    {
        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 "giannis@hotmail.com";
        }
    }

1 个答案:

答案 0 :(得分:1)

使用Auth::attempt();时无需隐藏密码,因此请从路径中移除Hash::make

Route::get('test', function() {
$credentials = array('username' => 'giannis',
    'password' => 'giannis');
if (Auth::attempt($credentials)) {
    return "You are a user.";
}
return "No account for you";

});

它会像魅力一样发挥作用!