2016-06-18 2 views
0

Я занимаюсь разработкой одного защищенного приложения в PHP/MySQL (используя Laravel 5.2 рамки) и ниже мое требованиеКак войти все веб-транзакций (PHP/Laravel)

  1. мне нужно регистрировать все транзакции, что происходит в приложении, скажем, например, кто вошел в систему, какие операции он сделал. Если он откроет какой-либо отчет, какой отчет он откроет и какие данные он видел, и какие записи он видел?

  2. Это в основном для целей аудита, так что я должен иметь возможность хранить данные в БД и обеспечить аудит команды по требованию основе

Пожалуйста, дайте мне знать, если есть любой существующий плагин (ы), который будет поддержать это требование или предложить мне лучший способ его создания?

Заранее благодарен!

ответ

3

Logger

Самый простой и быстрый подход с использованием регистратора, представленную Laravel из коробки.

Вы можете отслеживать пользователя, добавив строку кода, подобную этой:

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

Где $ Ид

$user = Auth::user(); 

Или сделать его насухо создать статический метод для повторного использования через ваш применение:

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

Расширьте это, чтобы добавить больше данных по желанию.

Более подробная информация о регистраторе Laravel по адресу:

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

журнала событий/пересмотров

Если вы хотите, чтобы также отслеживать объекты в вашей системе вы могли бы хотеть также рассмотреть что-то вроде журнал событий:

Я использовал эту библиотеку: https://github.com/VentureCraft/revisionable в прошлом, и она хорошо работала для моей цели.

Evert time, когда сущность была изменена, создана или удалена, она будет вставлять запись в таблицу ревизий с сериализованным значением предыдущего и нового значений.

Вам нужно будет настроить свои объекты. Это пример того, как я поставил его на лицо:

<?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'); 
    } 
} 

После того, что вы будете иметь возможность отслеживать изменилось на ваших лиц, не делая ничего лишнего в вашем коде.

Event Sourcing

источников событий представит много сложностей для вашего приложения, но он будет решать много проблем.Внедряя этот шаблон, вы сможете не только регистрировать то, что пользователь делает в вашей системе, но и отслеживать каждую сущность с течением времени. Это достигается только за счет хранения событий по мере их возникновения и воссоздания объектов путем запуска всех событий. Это повлияет на производительность, но это можно решить, объединив этот шаблон с шаблоном Materialized View. Это может добавить конечную последовательность для вашего приложения.

Пожалуйста, убедитесь, что это действительно ценность использования этого шаблона, в противном случае вы (и ваша команда) будете чувствовать боль сложности

+0

я не смог разместить ссылку на поиск событий (не хватает репутации) , но вот он: [Laravel-Broadway] (https://github.com/nWidart/Laravel-broadway). Вот общее описание шаблона: [Шаблоны проектирования Microsoft] (https://msdn.microsoft.com/en-us/library/dn589792.aspx) – gaheinrichs

+0

Спасибо @gaheinrichs. Я попробую, как вы сказали. – Nagesh

+1

@gaheinrichs Лучше, если вы включите соответствующую информацию в свой ответ, в дополнение к ссылкам. В противном случае, ссылки только для ответов сразу рассматриваются для удаления. У вас очень хорошее начало для высококачественного ответа здесь, так что сделайте дополнительные шаги и включите, как использовать рекомендуемые вами подходы. –