127 messaggi dal 06 giugno 2011
Ciao a tutti, in un app multitenancy (con db separati per ogni tenant) dove ci possono essere diversi utenti per i diversi tenant. Questi utenti possono avere delle restrizioni, qual è un buono approccio per poter filtrare il db, in base all user loggato e al tipo di user? Gli utenti possono appartenere anche ad un gruppo e quindi chi appartiene a quel gruppo può anch'esso vedere la risorsa, in oltre un utente può decidere di condividere quel record con uno specifico utente... io stavo cercando di utilizzare i global filter , tramite il token ottengo l'id dell utente , in ogni mia entita ce una colonna string dove ci sono gli id che possono vederr quel record separati da ; (lo so che non e una buona prassi, la sistemero) , utilizzo un provider inniettato tramite transient per prendermi ad ogni richiesta l id dell utente dal token e passarlo al mio global filter del mio contesto, il problema è che nel global filter non posso utilizzare la sintassi dello split e cercare se l id dell utente e in uno di quelli del record... utilizzando contains invece mi funziona ma non e per niente ideale perché anche se utilizzo guid ci potrebbe essere la remota possibilità di avere un mach non veritiero... come potrei risolvere ? Per raggiungere l obbiettivo ci sono altre strade ? Perché global filter viene usata spesso per la soft delete oppure per filtrare un db shared in base all id del tenant, a me serve in più anche poter filtrare in base all utente e al gruppo... per rendere l idea il mio codice e simile a questo citato, la differenza sta che io posso avere diversi id perché devo gestire la condivisione del record e i gruppo utente

https://stackoverflow.com/questions/50534533/current-user-id-into-global-filter-on-database-context
10.907 messaggi dal 09 febbraio 2002
Contributi
Ciao,

chi appartiene a quel gruppo può anch'esso vedere la risorsa

Questo è più un problema di autorizzazione per l'accesso a una risorsa. A parte la difficoltà tecnica, credo che usare un global filter non si l'approccio ideale.

Dovresti provare ad usare le policy di autorizzazione di ASP.NET Core MVC oppure usare il servizio IAuthorizationService per l'autorizzazione on demand.

Info su policy
http://www.aspitalia.com/articoli/asp.net-core/autenticazione-autorizzazione-aspnetcore-p-4.aspx#title_5

Info su IAuthorizationService
http://www.aspitalia.com/articoli/asp.net-core/autenticazione-autorizzazione-aspnetcore-p-5.aspx#title_2

ciao,
Moreno

Enjoy learning and just keep making
127 messaggi dal 06 giugno 2011
Si infatti stavo vedendo altro perché con i global filter troppo macchinoso, l autorizzazione le utilizzo ma a livello di chiamate controller, a livello invece di dati come si potrebbe fare a filtrare tutte le tabelle in base ad una lista di id( che hanno i permessi)?

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.