Questa sembrerà una domanda stupida, ma mi chiedo solo se mi manca un trucco da nessuna parte.Il modo migliore per garantire che gli utenti registrati si limitino a vedere i loro dati
Lo scenario è che ho un'applicazione Web che utilizza Simple Memebership, dove gli utenti possono registrarsi per usarlo (programma di fatturazione per esempio).
Tuttavia, dovrebbero essere in grado di visualizzare/aggiornare/rimuovere solo le informazioni che essi stessi aggiungono al database/app web.
Qual è il modo migliore per garantire che l'utente acceda solo alle proprie informazioni?
E 'per aggiungere un campo Nome utente per ogni tavolo, ad esempio:
public class Invoice
{
public int InvoiceId { get; set; }
public int CustId { get; set; }
public string UserName { get; set; }
}
public class Item
{
public int ItemId { get; set; }
public int InvoiceId { get; set; }
public string UserName { get; set; }
}
... e poi in qualsiasi controller che accede ai dati, è sufficiente aggiungere un controllo per il nome utente all'interno di ogni query, ad esempio:
var Inv = db.Invoices.Where(x => x.UserName = User.Identity.Name);
var Itm = db.Items.Where(y => y.UserName = User.Identity.Name);
che è quello che sto usando attualmente, ma si chiedeva se questa è migliori pratiche? O se c'è un modo più semplice ora siamo su MVC4?
E 'meglio utilizzare UserName o UserId dalla ProfiloUtente tavolo , o che importa?
aggiornamento per aggiungere chiarezza commenti
Così 10 utenti si sono registrati - e tutto ha creato le proprie fatture. Non voglio che nessun utente veda la fattura di altri utenti.
Grazie per qualsiasi consiglio.
Mark
Io non questo deve essere fatto a livello di codice, ma piuttosto a livello di database. Se un utente pubblica qualcosa, il modo migliore è quello di collegare quel post all'utente. Se un utente accede al sito Web, la query deve recuperare tutto ciò che è correlato a quell'utente, quindi non è necessario gestirlo nel codice. – Terry
Come hai potuto farlo ovunque tranne il codice? Il database non saprebbe chi sarà l'utente (scusate se ho perso il vostro punto). grazie – Mark
A un certo punto dell'applicazione, è necessario recuperare le informazioni che l'utente può vedere. A quel punto, sai già chi è l'utente, perché accedono, quindi dovresti avere almeno un userid. Ora quando recuperi le informazioni, usa quell'ID utente per eseguire la tua query e ottenere le informazioni collegate all'utente giusto. – Terry