2016-06-18 13 views
0

ich in PHP/MySQL eine sichere Anwendung entwickle (mit Laravel 5.2 Framework) und unten ist meine AnforderungWie alle Web-Transaktionen im Log (PHP/Laravel)

  1. ich alle Transaktionen protokollieren müssen, dass Zum Beispiel, wer sich anmeldet, welche Operationen er gemacht hat. Wenn er irgendeinen Bericht öffnet, welchen Bericht er eröffnet hat und welche Daten er gesehen hat und welche Aufzeichnungen er gesehen hat?

  2. Dies ist im Grunde für Prüfungszweck soll ich so in der Lage in db zum Speichern von Daten und bietet Team auf Bedarfsbasis

Bitte lassen Sie mich zu prüfen, ob es eine vorhandene Plugin ist (s), was würde unterstützen Sie diese Anforderung oder schlagen Sie mir den besten Weg vor, dies zu bauen?

Vielen Dank im Voraus!

Antwort

3

Logger

Der einfachste und schneller Ansatz ist durch den Logger durch Laravel aus der Box zur Verfügung gestellt werden.

können Sie den Benutzer verfolgen, indem Sie eine Zeile Code ähnlich wie diese Zugabe:

Log::info('Showing user profile for user: '.$id); 

Wo $ id ist

$user = Auth::user(); 

Oder, um es eine statische Methode trocknen zu lassen erstellen über Ihre wiederzuverwenden Anwendung:

public static function trackUser($message){ 
    $user = Auth::user(); 
    Log::info('Showing user profile for user: '.$user->id); 
} 

Erweitern Sie diese Option, um weitere Daten wie gewünscht hinzuzufügen.

Mehr Informationen über die Laravel Logger an:

https://laravel.com/docs/5.2/errors#logging

Event Log/Revisionen

Wenn Sie auch Einheiten wollen in Ihrem System verfolgen Sie auch so etwas wie ein möchten vielleicht prüfen Ereignisprotokoll:

Ich habe diese Bibliothek verwendet: https://github.com/VentureCraft/revisionable in der Vergangenheit und es funktionierte gut für meinen Zweck.

Evert Zeit, die eine Entität geändert, erstellt oder gelöscht wird, fügt sie einen Datensatz in eine Revisions-Tabelle mit einem serialisierten Wert der vorherigen und neuen Werte ein.

Sie müssen Ihre Entitäten einrichten. Dies ist ein Beispiel dafür, wie ich es eingestellt auf eine Einheit auf:

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 
use Sofa\Revisionable\Laravel\RevisionableTrait; 
use Sofa\Revisionable\Revisionable; 

class Invoice extends Model implements Revisionable { 
    use RevisionableTrait; 

    protected $table = 'invoices'; 
    protected $fillable = ['po_id', 'file_name', 'charges', 'customer', 'company', 'notes', 'tax', 'created_by']; 
    protected $revisionPresenter = 'App\Presenters\InvoicePresenter'; 

    public function po() 
    { 
     return $this->belongsTo('App\PO'); 
    } 

    public function transactions() 
    { 
     return $this->hasMany('App\Transaction'); 
    } 
} 

Danach können Sie in der Lage, auf Ihre Entitäten geändert Schiene, ohne in Ihrem Code Extra etwas zu tun.

Ereignis Sourcing-

Event-Sourcing wird eine Menge Komplexität Ihrer Anwendung einzuführen, aber es wird eine Menge Probleme zu lösen.Durch die Implementierung dieses Musters können Sie nicht nur protokollieren, was ein Benutzer in Ihrem System tut, sondern auch jede Entität mit der Zeit verfolgen. Dies wird erreicht, indem nur die Ereignisse gespeichert werden und die Entitäten durch Ausführen aller Ereignisse neu erstellt werden. Dies wirkt sich auf die Leistung aus, kann jedoch durch Kombination dieses Musters mit einem materialisierten Ansichtsmuster gelöst werden. Dies kann Ihrer App eine mögliche Konsistenz hinzufügen.

Bitte stellen Sie sicher, dass es wirklich ein Wert dieses Muster zu verwenden, andernfalls Sie (und Ihr Team), um den Schmerz der Komplexität fühlen

+0

war ich nicht in der Lage auf den Link für Event-Sourcing (nicht genug Ruf) zu schreiben , aber hier ist es: [Laravel-Broadway] (https://github.com/nWidart/Laravel-broadway). Hier ist eine allgemeine Beschreibung des Musters: [Microsoft Design Patterns] (https://msdn.microsoft.com/en-us/library/dn589792.aspx) – gaheinrichs

+0

Danke @gaheinrichs. Ich werde es versuchen, wie du gesagt hast. – Nagesh

+1

@gaheinrichs Es ist besser, wenn Sie zusätzlich zu den Links die relevanten Informationen in Ihre Antwort einfügen. Andernfalls werden Link-Only-Antworten sofort zum Löschen berücksichtigt. Sie haben hier einen sehr guten Einstieg in eine qualitativ hochwertige Antwort. Führen Sie daher die zusätzlichen Schritte aus und geben Sie an, wie Sie die von Ihnen empfohlenen Ansätze verwenden. –