API 的 Laravel 用户识别
Posted
技术标签:
【中文标题】API 的 Laravel 用户识别【英文标题】:Laravel user identification for API 【发布时间】:2018-12-02 16:27:39 【问题描述】:我想构建一个访问 Laravel API 的 Vue Web 应用程序。不需要身份验证(如电子邮件或密码),除了我必须知道是谁提出请求。我的想法是在第一个请求时给每个客户端一个随机令牌,然后将在每个进一步的请求中发送。
在 Laravel 中实现此功能的最佳方法是什么?我发现了这个,但它看起来很复杂,并不是我真正需要的东西:https://laravel.com/docs/5.6/passport#consuming-your-api-with-javascript
【问题讨论】:
您需要使用用户名/密码进行身份验证,然后在身份验证后用户可以使用令牌......这基本上就是它的工作原理 【参考方案1】:在您的用户表中添加一个 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()
访问您的用户
【讨论】:
【参考方案2】:JWT 可能是最好的方法。 an excellent Laravel implementation 可以根据您喜欢的任何内容创建令牌(有关详细信息,请参阅wiki),它比 Passport 简单得多。如果您只需要验证用户是否是同一用户而不需要其他任何内容,则可以生成一个 UUID 并使用它来生成令牌。
【讨论】:
以上是关于API 的 Laravel 用户识别的主要内容,如果未能解决你的问题,请参考以下文章