Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel 5身份验证::尝试()总是失败_Php_Laravel 5 - Fatal编程技术网

Php Laravel 5身份验证::尝试()总是失败

Php Laravel 5身份验证::尝试()总是失败,php,laravel-5,Php,Laravel 5,my Auth::trument()返回失败每次,我都在使用自己的订阅者表,我已经更改了config/Auth.php中的设置以使用订阅者表 下面是我的登录控制器 <?php namespace App\Http\Controllers; use App\Http\Requests; use App\Subscriber; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Hash; use Illu

my Auth::trument()返回失败每次,我都在使用自己的订阅者表,我已经更改了config/Auth.php中的设置以使用订阅者表

下面是我的登录控制器

<?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\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;
    }
}

使用
Auth::attemp()
时,您不能执行以下操作:

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

Auth::attempt(['email' => $email, 'password' => $password])
因此,在您的情况下,您应该向
用户
模型添加以下内容:

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

在您的newSubscriber方法中更改

$subscriber->pass =  Hash::make(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; 
   }
}

您将密码作为pass传递给验证器,验证器需要“password”
如果(Auth::trust(['email'=>$email,'password'=>$password]))
我的数据库中的password列是passyes,我知道,但输入变量是password,就像您受保护的hiddenokay一样。我将其更改为pass,仍然失败($request);退出();在您的验证器之前,查看您在我的用户模型或订阅者模型中得到了什么?最有可能是订阅者。我将pass的所有实例都更改为password,现在当我登录时,我将参数1传递到illumb\Auth\EloquentUserProvider::validateCredentials()必须是illumb\Contracts\Auth\Authenticatable的实例,App\Subscriber的实例,在第390行调用/Users/babu/Sites/ito/vendor/laravel/framework/src/illighte/Auth/Guard.php并定义了它。不管我已经解决了它,我必须更改我的订户模型以扩展Eloquents,这样您就不会使用
getAuthPassword()
$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; 
   }
}