首页 > 解决方案 > 在登录中注入一个步骤

问题描述

我正在尝试在用户第一次登录我的 api 时执行操作。我通过密码授予授权方法将 Laravel 6.2 与 Passport 一起使用。

我的用户模型具有以下字段。

id, username, display_name, firstname, lastname, display_picture, locked, email, last_login, created_at, updated_at, deleted_at

最初,我认为最好的启动位置是在登录令牌发送给用户之前,但是由于用户在 last_login 字段为空之前从未登录过。然而问题是因为在这个阶段令牌永远不会发送回用户,当他们进入创建阶段时,我无法确认用户的令牌。所以我的请求保护没有登录的用户信息。

Auth()->guard('api')->user();

即返回null。关于我如何做到这一点的任何想法?

标签: phplaravel-passportlaravel-6.2

解决方案


这个答案不是 Laravel 特有的,但你的问题让我想起了我前段时间解决的一个问题。

我所做的是last_seen在用户对象上实现了一个字段——这个字段在用户创建或帐户验证时没有填充。如果 cookie 是旧的,它会在登录和有意义的活动中填充。

如果用户登录时此字段为空,而不是将它们发送到用户区域,我将它们发送到教程然后更新该字段 - 如果该字段已填充,那么我只需更新该字段并将它们发送到用户区。


假设用户操作以任何有意义的方式记录,则可以将同一字段替换为计算变量。

另外,如果平台是社交的,这对于停用未使用的帐户和“状态”都是有用的值。


推荐阅读