繁体   English   中英

Laravel sanctum API,检索令牌以在视图组件中使用

[英]Laravel sanctum API, retrieve the token for use in view components

这是上下文。 我有两个使用同一个域的站点。

第一个使用 Laravel 和视图组件第二个是“API”,我使用 Laravel Sanctum。 此 API 有一个用户。 稍后,还会有第三个站点使用相同的 API。

API认证系统完美运行。 当我从 Postman 切换我的用户时,我的令牌被返回。

我想知道在我的第一个站点上使用 vue 组件进行令牌检索和使用。

我的想法是将 API 用户登录凭据存储在我的 .env 文件中,并在我使用 vue 组件的控制器中检索令牌。

另一种解决方案是在每次调用 API 时获取我的令牌,但这可能很麻烦。

最后将令牌存储在用户的连接处并重用它,但是在哪里存储它,在会话中,在 cookie 中,...... 安全级别并不理想。

提前感谢您的想法。

从前端使用令牌作为不记名令牌的默认操作如下

  1. 登录尝试后端,稍后您将获得令牌以验证您的请求。
  2. 使用 vuex 存储将其存储在您的用户存储中
  3. 然后使用该令牌执行您的 API 请求
  4. 注销后销毁令牌

如果您担心安全性,那么令牌应该有过期时间,并且令牌本身应该在用户注销时从后端销毁。 每次用户登录时,都会为他们创建新的令牌

如果您的 API 身份验证工作正常,那么您必须在每次用户登录时将您的令牌存储在数据库中。并在其他一些情况下删除。 要在用户每次登录时将令牌存储在数据库中,请使用以下代码:

public function login(Request $request)
{
    if (!Auth::attempt($request->only('email', 'password'))) {
        return response()->json([
            'message' => 'Invalid credential'
        ], 401);
    }

    $user = User::where('email', $request['email'])->firstOrFail();
    //store the hashed token on db and return plain text token for the user
    $token = $user->createToken('token_name')->plainTextToken;

    return response()->json([
        'access_token' => $token,
        'token_type' => 'Bearer',
    ]);
}

我从这里拿了代码

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM