【发布时间】:2017-10-17 21:04:12
【问题描述】:
我是 laravel 的新手,所以这可能是我的错误。使用 laravel 和 tymondesigns/jwt-auth 来验证用户。我正在观看本教程Complete JWT-AUTH api with Laravel 并遵循每一步,tymon 包安装和登录用户。但我收到了这个错误。我在下面发布了代码,如果您需要任何其他文件中的更多代码,请告诉我。
EloquentUserProvider.php 第 120 行中的 ErrorException:参数 1 已通过 到 Illuminate\Auth\EloquentUserProvider::validateCredentials() 必须是 Illuminate\Contracts\Auth\Authenticatable 的一个实例, 应用\用户给定
这是我的用户模型:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
protected $hidden = ["password"];
protected $fillable = [
"id",
"name",
"password",
"mobile_number",
"gender",
"age",
"company_name",
"profile_image",
"email"
];
}
?>
这是我的 ApiAuthController.php
use JWTAuth;
use Illuminate\Http\Request;
use Tymon\JWTAuth\Exceptions\JWTException;
class ApiAuthController extends Controller
{
public function authenticate(){
$credentaials = request()->only('email', 'password');
print_r($credentaials);
try {
$token = JWTAuth::attempt($credentaials);
if(!$token){
return response()->json(['error'=>'invalid credentaials'], 401);
}
} catch (JWTException $e) {
return response()->json(['error'=>'something went wrong'], 500);
}
return response()->json(['token'=>$token], 200);
}
}
我的 UsersController 中的用户存储功能:
public function store(Request $request)
{
$payload = json_decode($request->payload, true);
$validator = Validator::make($payload, $this->rules);
if ($validator->passes()) {
$user = (new User())->fill($payload);
if($user->save()){
$response = [
"msg" => "User created",
"link" => "/api/users/" . $user->id
];
return response()->json($response, 200);
}
$response = [
"msg" => "An error occured"
];
return response()->json($response, 404);
}
else {
return response()->json($validator->messages(), 404);
}
}
在存储用户请求时,payload为key,value为json对象,小样本对象如下:
payload={
"name": "Alexa",
"email": "alexa@gmail.com",
"password":"12345",
"gender": "Male",
"age": 24
}
【问题讨论】:
-
与此错误无关的提示:从可填写字段中删除“id”,您不希望您的 id 可批量分配。而且您的密码应该只在隐藏数组中。不是在可填充的。以及它的 Credentials 而不是 Credentials。
标签: laravel laravel-5.4