将用户登录详细信息存储到Laravel

时间:2017-12-12 12:17:37

标签: php laravel laravel-5.5

我使用php artisan make:auth等在Laravel 5.5中设置了身份验证,但现在我遇到了问题。

我有一个名为user_actions的数据库表,我存储了用户在我的应用程序中执行的操作(例如他们打开了哪些页面,他们在搜索时使用了哪些过滤器,这样的东西)。我想在这个表中添加登录,但我不能为我的生活找出方法。

LoginController仅包含构造函数和redirectTo变量。它有use AuthenticatesUsers但是在AuthenticatesUsers项目中搜索除了登录控制器文件中的两个提及之外没有任何结果。

AuthServiceProvider只有注册策略的启动方法。

Register控制器中有create方法为用户创建数据库条目,但在Login中我不确定发生了什么。

那么在哪里可以添加我的调用来将登录操作存储到数据库中?我必须听一个活动吗?

2 个答案:

答案 0 :(得分:2)

向登录控制器添加经过身份验证的方法,此方法在身份验证过程后立即调用

use Illuminate\Contracts\Auth\Authenticatable;
use Illuminate\Foundation\Auth\AuthenticatesUsers;


class LoginController extends Controller  
{
    use AuthenticatesUsers;

    /**
      * @param Request $request
      * @param Authenticatable $user
      * @return \Illuminate\Http\RedirectResponse
    */
    protected function authenticated(Request $request, Authenticatable $user)
    {
        /* Your db inserts */
        return redirect()->intended($this->redirectTo);
    }
}

如果您还想捕获登录尝试和/或登录失败,您可以覆盖登录功能,因为只有在成功登录后才会调用已验证的

答案 1 :(得分:1)

您可以覆盖默认登录功能

 use AuthenticatesAndRegistersUsers {
        login as protected userLogin;
    }
    public function login(Request $request) {
    //you db logic
    return $this->userLogin();
    }

您可以在vendor\laravel\framework\src\Illuminate\Foundation\Auth

中找到所有登录逻辑

或者你伤心地使用event listener

<?php

namespace App\Listeners;

class UserEventSubscriber
{
    /**
     * Handle user login events.
     */
    public function onUserLogin($event) {
        //log data in db
     }

    /**
     * Handle user logout events.
     */
    public function onUserLogout($event) {
      //log data in db
     }

    /**
     * Register the listeners for the subscriber.
     *
     * @param  Illuminate\Events\Dispatcher  $events
     */
    public function subscribe($events)
    {
        $events->listen(
            'Illuminate\Auth\Events\Login',
            'App\Listeners\UserEventSubscriber@onUserLogin'
        );

        $events->listen(
            'Illuminate\Auth\Events\Logout',
            'App\Listeners\UserEventSubscriber@onUserLogout'
        );
    }

}