Laravel - 无法获得auth :: atempt正常工作

时间:2015-04-24 08:31:03

标签: php laravel laravel-4

   $inputs["mail"] = Input::get('mail');
    $password = Hash::make(Input::get("password","")); 
    $user = new User(); 
    $user->password=$password;
    $inputs["password"] = $password;
     if( Auth::attempt($inputs) )
    {
        return 'loginOK';
    }
    else
    {
        return 'false';
    }

我认为$ password与数据库的密码不同。 我需要尝试其他方式吗?

<?php
    use Illuminate\Auth\UserInterface;
    use Illuminate\Auth\Reminders\RemindableInterface;

    class User extends Eloquent implements UserInterface,          

    RemindableInterface {
    protected $table ='users';
    public function getAuthIdentifier(){
        return $this->getKey();
    }
    public function getRememberToken(){
        return $this->remember_token;
    }
    public function getAuthPassword(){
        return $this->password;
    }
    public function setRememberToken($value){
        $this->remember_token = $value;
    }
    public function getRememberTokenName(){
        return 'remember_token';
    }
    public function getReminderEmail()  {
        return $this->email;
    }
   }

是用户模型。

无法使auth :: atempt正常工作 这是什么问题?

$input = [
    'mail' => Input::get('mail'),
    'password' => Input::get('password'),
 ];

 if (Auth::attempt($input)) {
    echo 'Success';
 } else {
    echo 'Failed';
 }

我是由folower编辑的。 我有麻烦。 我仍然无法获得

2 个答案:

答案 0 :(得分:1)

问题在于您将Hashed密码传递给attempt方法,该方法实际上需要未散列的密码并自行进行散列,所以这样做:

$inputs["password"] = Input::get('password');

应该这样做。

我不确定你是否在玩,但你的代码没有正确编写,你应该考虑直接使用Input对象。

答案 1 :(得分:0)

两件事:

  1. 您无需哈希密码
  2. 您无需建立用户模型。
  3. 完成以下操作就足够了:

    $input = [
        'mail' => Input::get('mail'),
        'password' => Input::get('password'),
    ];
    
    if (Auth::attempt($input)) {
        echo 'Success';
    } else {
        echo 'Failed';
    }