簡體   English   中英

Laravel 5 Auth :: attempt()總是失敗

[英]Laravel 5 Auth::attempt() always failing

我的Auth :: attempt()每次返回都會失敗,我正在使用自己的訂戶表,我已經將config / auth.php中的設置更改為使用訂戶表。

以下是我的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('/', 'LoginController@login');

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

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

Route::post('register', 'SubscribersController@newSubscriber');

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

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

使用Auth::attemp()您不能執行以下操作:

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

它應該是:

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

因此,在您的情況下,應在User模型中添加以下內容:

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

在您的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; 
   }
}

希望這會起作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM