Php Laravel 5身份验证::尝试()总是失败
my Auth::trument()返回失败每次,我都在使用自己的订阅者表,我已经更改了config/Auth.php中的设置以使用订阅者表 下面是我的登录控制器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
<?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;
}
}