【问题标题】:Laravel user identification for APIAPI 的 Laravel 用户识别
【发布时间】:2018-12-02 16:27:39
【问题描述】:

我想构建一个访问 Laravel API 的 Vue Web 应用程序。不需要身份验证(如电子邮件或密码),除了我必须知道是谁提出请求。我的想法是在第一个请求时给每个客户端一个随机令牌,然后将在每个进一步的请求中发送。

在 Laravel 中实现此功能的最佳方法是什么?我发现了这个,但它看起来很复杂,并不是我真正需要的东西:https://laravel.com/docs/5.6/passport#consuming-your-api-with-javascript

【问题讨论】:

  • 您需要使用用户名/密码进行身份验证,然后在身份验证后用户可以使用令牌......这基本上就是它的工作原理

标签: php laravel


【解决方案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 并使用它来生成令牌。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-01-22
      • 2018-01-23
      • 1970-01-01
      • 1970-01-01
      • 2019-08-26
      • 2022-11-23
      • 1970-01-01
      相关资源
      最近更新 更多