Salvare adrese IP - Laravel

Salutări, am un script în Laravel și aș dorii ca la fiecare utilizator în parte să salvez toate adresele IP cu care acesta s-a logat și ulterior să le afișez în panoul de administrare, unde să le pot vedea cu Last login time și last login ip.

Sunt începător cu Laravel.

Request::ip();

sau cu helper-ul

request()->ip();

DAR: atenție la GDPR! Nu poți stoca adresa IP fără consent decât în log-ul serverului, și acolo pentru o perioadă limitată.

2 Likes

Știu că cer mult, dar cum aș putea implementa treaba asta în mod direct, având sistemul de login de la Laravel?

Ceva de genul: https://laraveldaily.com/save-users-last-login-time-ip-address/

Inregistrezi un event listener pentru successful login unde salvezi ipul intr-o tabela sau unde le salvezi tu.

https://laravel.com/docs/5.7/authentication#events

Iti trebuie asta

'Illuminate\Auth\Events\Login' => [
        'App\Listeners\LogSuccessfulLogin',
    ],
1 Like


Am găsit tutorialul ăsta, să vedem ce rezolv :slight_smile: Merci fain băieți!

1 Like

Am rezolvat o mare parte din problemă, acum pot extrage adresa IP și o pot salva în baza de date, dar, dacă utilizatorul se conectează pe altă rețea și are o altă adresă IP, cum aș putea salva fiecare adresă IP în parte și ulterior să le afișez pe toate în panoul de administrare.
De exemplu: user x: IP Address 1 - 1.01.2019
IP Address 2 - 2.01.2019
IP Address 3 - 3.01.2019

1 Like

Cum stochezi adresa IP? În coloană tip text sau varchar?
Ori faci o altă tabela ip_users cu coloane user_id, ip_address, timestamp, ori faci în tabela deja existentă o coloană tip text sau json și salvezi datele sub formă json

1 Like

Perfect, am reușit într-un final.

Just sayin…

3 Likes

@iamntz bun, chiar foarte bun. @andreiasimarian cum ai rezolvat? Ai creat o altă tabelă?

Cred ca cel mai elegant si simplu ar fi cu hasMany si belongsTo

Gen:

App\User:

    [...]
    public function ips()
    {
        return $this->hasMany(Ip::class);
    }

App\Ip:

    [...]
    public function user()
    {
        return $this->belongsTo(User::class);
    }

Evident, tabela de la ips trebuie sa aibe user_id si eventual timestamps :slight_smile:

Salveaza adresa cu CIDR (poate fi util cand vrei sa limitezi accesul pe anumite ip-uri sau clase de ip-uri), nu doar adresa, ai grija si la IPv6.

1 Like