【问题标题】:Check if token expired in Laravel检查令牌是否在 Laravel 中过期
【发布时间】:2023-03-27 05:38:01
【问题描述】:

我有带有列的表标记:user_idtokenexpires_at

例子:

我有令牌:12345,对我来说,他的过期时间:2018-06-05

当我生成新令牌时,我最多生成 7 天..

如何在模型中检查这一点?

我尝试使用模型中的范围:

public function scopeExpired($query) {
    return $this->where('expires_at', '<=', Carbon::now())->exists();
}

但不工作。总是假的..

【问题讨论】:

    标签: php laravel


    【解决方案1】:

    我总是用以下方式做这样的事情。请注意,您需要 expires_at 字段作为模型的属性。

    // Probably on the user model, but pick wherever the data is
    public function tokenExpired()
    {
        if (Carbon::parse($this->attributes['expires_at']) < Carbon::now()) {
            return true;
        }
        return false;
    }
    

    然后从你可以打电话的任何地方:

    $validToken = $user->tokenExpired();
    
    // Or realistically
    
    if ($user->tokenExpired()) {
        // Do something
    }
    

    【讨论】:

    • 我弄错了。我的令牌有效期至:2018-06-05。但是今天是2018-05-29。我需要得到真实的,但不是虚假的。 false - 已过期。
    • 所以把方法名改成tokenNotExpired,把&lt;改成&gt;?请注意,使用否定的方法名称虽然令人困惑! csharpdeveloper.wordpress.com/2016/01/20/…。您的评论告诉我我的答案有效(您自己的代码可能也有效),但您只是期望得到不同的结果。
    • 是的。非常感谢
    • 没问题!想想看,你也可以将方法重命名为tokenValid(),这很清楚,并给出了你期望的结果:)
    猜你喜欢
    • 2021-12-21
    • 2020-11-19
    • 1970-01-01
    • 1970-01-01
    • 2016-01-03
    • 2016-08-16
    • 2015-06-18
    • 2020-06-30
    • 2017-07-29
    相关资源
    最近更新 更多