Ho un'applicazione MVC che ha il (semplificato) Struttura come di seguito (da sinistra a destra)Quale livello della mia applicazione ASP.NET MVC dovrei controllare le informazioni sull'iscrizione?
UI -> REGOLATORI -> Servizi -> REPOSITORY -> DATABASE
Abbiamo cercato per mantenere ogni livello disaccoppiato dal prossimo. Stiamo usando .NET Membership per gestire la sicurezza, e abbiamo una funzione basata sulle autorizzazioni, diciamo "Mostrami tutti i documenti per il mio tipo di utente".
caso:
Lo strato di servizi non hanno alcuna consapevolezza del nostro provider di appartenenze .NET? Avremmo quindi i metodi del livello di servizio che assomigliavano a "GetDocumentsByUserType (int UserTypeId) {..}"?
Il metodo GetDocumentsByUserType() è consapevole del fatto che stiamo usando .NET Membership, utilizzare i metodi Membership per ottenere il tipo di utente corrente e restituire i documenti rilevanti?
anche:
- Ha # 1 fare il mio livello di servizi meno sicuro, come il mio livello di controllo
potrebbe passare in qualsiasi cosa si voleva come UserType? - Il numero 2 rende il livello dei miei servizi troppo dipendente da una tecnologia specifica, ovvero .NET
Membership? C'è un altro modo di considerare qui?
Spero di aver fornito abbastanza dettagli. Per favore, grida se no e io aggiungo.
Grazie.
+1, IPrincipal è la strada da percorrere. IPrincipals specialmente personalizzati. PrincipalPermission è davvero ingegnoso, ma avendolo usato pesantemente su un progetto, avrei davvero discusso contro di usarlo - è un po 'una mina terrestre per la gente e rende davvero difficili i test pur essendo difficili da testare. –
Mille grazie, ragazzi. Molto utile. – christofr
Ecco dove diventa interessante, cosa succede se ho bisogno del campo chiave primaria che rappresenta l'utente nel database? So che potrei ottenere il campo del nome per l'utente, ma preferirei usare il campo della chiave primaria. Come potrei accedere a questo da IPrincipal senza impostare il campo del nome sul valore della chiave primaria (so che suona male). – user1790300