我是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";
}
}
我的桌子是&#39;用户&#39;它有&#39;用户名&#39;和密码&#39; 知道如何解决这个问题吗? 注意:我添加了使用Auth;在我的控制器顶部
答案 0 :(得分:0)
您的App\User
课程必须实施Illuminate\Contracts\Auth\Authenticable
合同。这是因为存储库方法将其类型化。默认用户实现(至少现在为5.2)通过扩展Illuminate\Foundation\Auth\User
间接实现。
您可以在documentation身份验证条目中找到有关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
{
// ...
}