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 用户识别的主要内容,如果未能解决你的问题,请参考以下文章

Laravel - php识别多个签到/签出出席

Laravel 5 通过外部 API 对用户进行身份验证

使用 laravel 注册新用户作为 API

获取“?” Laravel 中的变量

Laravel 5.8 新用户注册时无法生成 api_token

Laravel API控件来宾用户