Laravel + Vue JS:从数据库中获取/存储 Eloquent 模型的值

Posted

技术标签:

【中文标题】Laravel + Vue JS:从数据库中获取/存储 Eloquent 模型的值【英文标题】:Laravel + Vue JS: Get/store value of Eloquent Model from DB 【发布时间】:2017-08-20 14:32:58 【问题描述】:

我使用 vue.js 2 为前端和 Laravel 作为后端 API 构建了一个 SPA。 现在我尝试在用户登录失败超过 3 次时执行验证。

所以我为我的用户表添加了一个列“login_attempts”(int)。 我的问题是我不知道如何在我的 laravel 后端使用Eloquent ORM get 'login_attempts' value

另外,如果登录尝试的进一步验证失败/通过,我想增加/重置

// UserController.php
public function signin(Request $request) 

    $credentials = $request->only('email', 'password');
    $email = $request->input('email');

    // Check if login attempts above 3
    // Here I need to get the 'login_attempts' value
    $loginAttempts = App\User::where('email', $email)->value('login_attempts');
    if($loginAttempts >= 3)
       // Response: To many attempts
    

    try
        // Some JWT  Auth validation
        
     catch (JWTException $e) 
        // Increase failed login counter
        // $attemptedUser->   <--- Here i need to increase the 'login_attempts' for the user with the email of the login request
        $attemptedUser->save();
    
    // Some more validation and response

感谢您的帮助。

【问题讨论】:

【参考方案1】:

对原始代码的一些调整

//Here you get the 'login_attempts' value 

$loginAttempts = App\User::where('email', $email)->select('login_attempts')->first();

然后在catch()如下

...

$loginAttempts->login_attempts += 1;
$loginAttempts->save();

这将增加计数。

【讨论】:

确保在成功登录时将login_attempts 重置为0

以上是关于Laravel + Vue JS:从数据库中获取/存储 Eloquent 模型的值的主要内容,如果未能解决你的问题,请参考以下文章

在子级循环中获取父级 json 数据。 (Laravel Vue js)

访问 vue.js 模板中的 php 数组

从vue js中的json nonarray fornmat获取值(后端使用laravel)

在 laravel 中使用 vue.js 获取动态字段数据

在 Vue.js 中使用 axios 向 Laravel API 发送获取请求

如何正确地将数据从 vue 组件发布到 laravel 控制器