Un modo saggio per implementare un login al sito Web e tabelle di database per un piccolo negozio

1

Sto costruendo questo sito web per un piccolo negozio e mi è stato detto che è meglio non per mantenere le informazioni di accesso e il resto degli utenti sulla stessa tabella.

Ora mi chiedo, qual è il modo migliore per implementare il database di questo sito web?

Alcune delle tabelle del database sono:

  • I clienti
  • Provider
  • Prodotti
  • Etc ..

Ho bisogno di avere utenti diversi, dopo che qualcuno è entrato nel sito, a seconda dei loro diritti possono fare una serie di cose:

  • Se sono clienti, possono ordinare cose
  • Se sono dipendenti, possono ordinare cose, gestire azioni, aggiungere clienti, ecc.
  • Se sono il proprietario o l'amministratore possono aggiungere dipendenti e tutto il resto.

Devo mantenere il login e il resto delle informazioni dell'utente nella stessa tabella?

    
posta octohedron 25.04.2013 - 08:12
fonte

6 risposte

5

Non vi è alcun motivo di sicurezza per separare le informazioni di accesso dal resto delle informazioni dell'utente. Non rende il tuo sito più sicuro in alcun modo significativo, quindi dovresti semplicemente organizzare le tabelle con ciò che è più logico.

Il vero problema di sicurezza in questo dominio è che non dovresti memorizzare password in testo semplice. Memorizza solo un hash salato della password.

Detto questo, probabilmente è logico separare le informazioni dell'utente in poche tabelle, perché hai utenti diversi con ruoli diversi. Avere una tabella utente con tutte le informazioni comuni, quindi cliente, dipendente, ecc.

    
risposta data 25.04.2013 - 08:24
fonte
2

Penso che la progettazione della tabella sottostante soddisfi le tue esigenze.

**User** 
-----------
UserId
UserRoleId
UserFname
UserLName
.
.
.

**UserLogin**
------------
UserId
LoginName
Password

**UserRoles**
---------------
RoleId
Type

Ora, in base al UserRole, puoi decidere quali sono le caratteristiche che devono essere mostrate sul sito web. Qui UserRole potrebbe essere cliente, provider o amministratore

    
risposta data 25.04.2013 - 06:16
fonte
1

Potrebbe avere o meno senso disporre delle informazioni di accesso e dei clienti nella stessa tabella. Come sempre dipende solo dalle esigenze del business / applicazione. Se i dipendenti e gli amministratori sono "clienti" (e non solo), allora si potrebbe ottenere la possibilità di inserire gli accessi con le informazioni del cliente.

Tuttavia, tendo a mantenere gli accessi nella propria tabella sia per chiarezza che per la possibilità che un ruolo futuro non possa avere funzioni cliente. Fornisce maggiore flessibilità e una migliore separazione delle preoccupazioni.

    
risposta data 25.04.2013 - 05:25
fonte
0

Penso che dovresti usare la funzionalità di appartenenza di ASP.NET. Puoi creare una struttura di database separata con quella e molti dei livelli di sicurezza che il duro lavoro viene svolto per te da ASP.NET.

    
risposta data 25.04.2013 - 13:44
fonte
0

Poiché il design è per un piccolo sito web, penso che puoi avere un database normalizzato fino a 2Nf .

Mantenendo le credenziali di accesso dell'utente in una tabella e le relative informazioni in un'altra tabella. Come hai detto questo è un progetto di esercizio che cerca di dare una buona impressione dimostrando professionalità.

Avere tabelle di ruoli e permessi separati. A seconda del ruolo identifica, il permesso.

    
risposta data 25.04.2013 - 05:47
fonte
0

Potresti scaricare il codice src di qualche buon framework per questo (per esempio drupal non può usare il codice ma il db è buono). Quello che ho sempre visto è avere ruoli separati e / o tabelle delle autorizzazioni. Quindi 1 tabella ha ruoli in tutto il sito, un altro ha permessi (come un utente amministratore che può vedere i report ma non modificare gli utenti); e la tabella degli utenti ha gli accessi effettivi.

Un'altra tabella ha il link - > ID utente alle autorizzazioni e un altro ha ID utente ai ruoli

    
risposta data 25.04.2013 - 17:14
fonte

Leggi altre domande sui tag