| | 69 | === Безбедност на Database Context (Row-Level идентификација) === |
| | 70 | |
| | 71 | Го пренесуваме идентитетот на моментално најавениот корисник од Application Layer до Database Layer (PostgreSQL) користејќи Session Variables. Ова и овозможува на базата на податоци да знае кој ја извршува операцијата. |
| | 72 | |
| | 73 | {{{ |
| | 74 | public override async Task<int> SaveChangesAsync(CancellationToken cancellationToken = default) |
| | 75 | { |
| | 76 | var username = _httpContextAccessor.HttpContext?.User?.Identity?.Name ?? "system"; |
| | 77 | |
| | 78 | await Database.ExecuteSqlRawAsync("SELECT set_config('app.current_user', {0}, false)", new[] { username }, cancellationToken); |
| | 79 | |
| | 80 | return await base.SaveChangesAsync(cancellationToken); |
| | 81 | } |
| | 82 | }}} |
| | 83 | |