2015-10-26 51 views
2

我的Auth :: attempt()每次都返回失敗,我使用自己的訂戶表,我已經改變了config/auth.php中的設置以使用訂閱者表。Laravel 5 Auth :: attempt()總是失敗

下面

是我的LoginController

<?php 

namespace App\Http\Controllers; 

use App\Http\Requests; 
use App\Subscriber; 
use Illuminate\Support\Facades\Auth; 
use Illuminate\Support\Facades\Hash; 
use Illuminate\Support\Facades\Input; 

class LoginController extends Controller 
{ 
    public function login() 
    { 
     $email = Input::get('email'); 
     $password = Input::get('password'); 

//  $subscriber = Subscriber::where('email', $email)->first(); 
//  $checked = Hash::check($password, $subscriber->pass); 


     if (Auth::attempt(['email' => $email, 'pass' => $password])) 
     { 
      return 'it workedddd.'; 
     } 
     else 
      return 'failed'; 

    } 
} 

訂戶模型

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class Subscriber extends Model 
{ 
    protected $fillable = [ 

     'firstname', 
     'lastname', 
     'email', 
     'pass', 
     'phone', 
     'address', 
     'city', 
     'state', 
     'zip' 
    ]; 

    protected $hidden = ['password', 'remember_token']; 
} 

訂戶控制器

<?php 

namespace App\Http\Controllers; 

use App\Subscriber; 
use Carbon\Carbon; 
use Illuminate\Http\Request; 
use App\Http\Requests; 
use Validator; 
use App\Http\Controllers\Controller; 
use Illuminate\Support\Facades\Hash; 
use Illuminate\Support\Facades\Input; 

class SubscribersController extends Controller 
{ 

    public function newSubscriber(Request $request) //function to register new subscriber 
    { 

     $validator = Validator::make($request->all(), [ 
      'firstname' => 'required', 
      'lastname' => 'required', 
      'email' => 'required|email|unique:subscribers,email', 
      'password' => 'required|min:5', 
      'address' => 'required', 
      'city' => 'required', 
      'state' => 'required', 
      'zip' => 'required', 
      'phone' => 'required|unique:subscribers,phone' 
     ]); 

     if ($validator->fails()) { 
      return redirect('/register') 
       ->withErrors($validator) 
       ->withInput(); 
     } 


     $subscriber = new Subscriber(); 
     $subscriber->firstname = Input::get('firstname'); 
     $subscriber->lastname = Input::get('lastname'); 
     $subscriber->email = Input::get('email'); 
     $subscriber->pass = Hash::make(Input::get('password')); 
     $subscriber->address = Input::get('address'); 
     $subscriber->city = Input::get('city'); 
     $subscriber->state = Input::get('state'); 
     $subscriber->zip = Input::get('zip'); 
     $subscriber->phone = Input::get('phone'); 
     $subscriber->trial_time = 30; 
     $subscriber->date_signed_up = Carbon::now(); 
     $subscriber->next_bill_date =Carbon::now()->addMonth(1); 
     $subscriber->account_status = 'trial'; 
     $subscriber->save(); 
     return $subscriber; 
    } 
} 

路由

Route::get('/', function() { 
    return view('home'); 
}); 

Route::post('/', '[email protected]'); 

Route::get('contact', function() { 
    return view('contact'); 
}); 

Route::get('register', function() { 
    return view('register'); 
}); 

Route::post('register', '[email protected]'); 

Route::get('feedback', function() { 
    return view('feedback'); 
}); 

Route::get('dashboard', array(
    'before' => 'auth.basic', 
    function(){ 
    return view('dashboard.user'); 
})); 
+0

您將密碼傳遞給驗證器作爲pass並且驗證器期望'password'if(Auth :: attempt(['email'=> $ email,'password'=> $ password]))' – futureweb

+0

column in my數據庫的密碼是通過 –

+0

是的我知道,但輸入變量是密碼,因爲你的保護隱藏 – futureweb

回答

0

當使用Auth::attemp()你不能做:

Auth::attempt(['email' => $email, 'pass' => $password]) 

它應該是:

Auth::attempt(['email' => $email, 'password' => $password]) 

所以你的情況,你應該添加以下到您的User型號:

public function getAuthPassword() 
{ 
    return $this->attributes['pass']; 
} 
+0

? –

+0

最有可能的用戶。 – user2094178

+0

仍然失敗 –

0

在您的newSubscriber方法中更改

$subscriber->pass = Hash::make(Input::get('password')); 

$subscriber->pass = bcrypt(Input::get('password')); 

您的訂戶模型應該是這樣..

<?php 

namespace App; 

use Illuminate\Auth\Authenticatable; 
use Illuminate\Database\Eloquent\Model; 
use Illuminate\Auth\Passwords\CanResetPassword; 
use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract; 
use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract; 

class Subscriber extends Model implements AuthenticatableContract, CanResetPasswordContract { 
    use Authenticatable, CanResetPassword; 

    protected $fillable = [ 

     'firstname', 
     'lastname', 
     'email', 
     'pass', 
     'phone', 
     'address', 
     'city', 
     'state', 
     'zip' 
    ]; 

    protected $hidden = ['pass', 'remember_token']; 

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

希望這會工作。

相關問題