我想构建一个访问Laravel API的Vue Web应用程序。不需要身份验证(例如电子邮件或密码),只是我必须知道谁在发出请求。我的想法是在第一个请求上给每个客户一个随机令牌,然后将其与其他每个请求一起发送。
在Laravel中实现此目标的最佳方法是什么?我发现了这一点,但它看起来很复杂,并不是我真正需要的东西:https://laravel.com/docs/5.6/passport#consuming-your-api-with-javascript
答案 0 :(得分:0)
在用户表中添加api_token字段
$table->string('api_token', 60)->unique();
生成api_token给新用户。 $user->token=str_random(60)
已注册
现在您可以使用此中间件
Route::group(['prefix' => 'api', 'middleware' => 'auth:api'], function () {
//all the api calls
});
在您的请求标头中,添加这样登录的用户令牌
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.$token,
],
要获取令牌值,必须先使用电子邮件和密码登录 控制器:
$credentials = $request->only('email', 'password');
if (Auth::attempt($credentials)) {
return response()->json(Auth::User());
}
在您的请求标头中,像这样添加令牌
现在,您可以通过request()->user()
答案 1 :(得分:0)
JWT可能是最好的方法。 an excellent Laravel implementation可以根据您喜欢的任何事物创建令牌(有关详细信息,请参考wiki),并且它比Passport更为简单。如果您只需要验证用户是否相同,则可以生成一个UUID并使用它来生成令牌。