我是Laravel 5.2的新手,所以现在我正在尝试手动身份验证,但出现此错误:
1/1
ErrorException in EloquentUserProvider.php line 114:
Argument 1 passed to Illuminate\Auth\EloquentUserProvider::validateCredentials() must be an instance of Illuminate\Contracts\Auth\Authenticatable, instance of App\User given, called in C:\xampp\htdocs\myblog\vendor\laravel\framework\src\Illuminate\Auth\SessionGuard.php on line 378 and defined
这是我的表格:
<form method="post" action='login'>
{!! csrf_field() !!}
<div class="form-group">
<label for="username">Username</label>
<input name="username" placeholder="Your name" class="form-control">
</div>
<div class="form-group">
<label for="password">Password</label>
<input name="password" class="form-control">
</div>
<div class="form-group">
<button class="btn btn-primary" type="submit">Login</button>
</div>
</form>
这是我的路线:
Route::post('login', 'ProfilesController@login');
这是我的登录方法:
public function login(Request $request){
if (Auth::attempt(['username' => $request->username, 'password' => $request->password])) {
// Authentication passed...
return redirect()->intended();
}else{
return "Something went wrong";
}
}
我的表是'users',并且具有'username'和'password'有任何想法如何解决吗?注意:我添加了使用Auth; 在我的控制器顶部
您的App\User
班级必须执行Illuminate\Contracts\Auth\Authenticable
合同。这是因为存储库方法具有这种类型的提示。默认的用户实现(至少现在是5.2)是通过扩展间接实现的Illuminate\Foundation\Auth\User
。
您可以在身份验证Authenticable
的文档条目中找到有关合同的信息。在该链接中,合同如下所示:
namespace Illuminate\Contracts\Auth;
interface Authenticatable {
public function getAuthIdentifierName();
public function getAuthIdentifier();
public function getAuthPassword();
public function getRememberToken();
public function setRememberToken($value);
public function getRememberTokenName();
}
幸运的是,Laravel提供了一个特质,Illuminate\Auth\Authenticable
为您提供了许多此类功能,因此,要满足此错误use
,您需要做的就是该特质,您可以使用与默认Laravel 5.2相同的方法(通过继承相同的方法)班级):
<?php namespace App;
use Illuminate\Foundation\Auth\User as Authenticable;
class User extends Authenticable
{
// ...
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句