2009-10-17 4 views
0

Je suis en train de développer une première version de mon site et avant de créer la version de production, j'aimerais connaître les opinions des gens sur la question de savoir si je vais dans la bonne direction. L'objectif principal est de permettre aux utilisateurs de partager des playlists. J'ai la table d'utilisateur (adhésion d'ASP.NET), la table de liste de lecture et une table d'autorisation. J'aimerais qu'un utilisateur crée une liste de lecture et accorde/refuse l'accès pour un utilisateur donné. Mon approche à ceci est d'avoir la table d'autorisation contenant une colonne "pStatus" où 0/null = deny, 1 = read. Lorsqu'un utilisateur demande l'autorisation d'accéder à une liste de lecture, le créateur choisit l'énumération pStatus. La colonne est ensuite modifiée en conséquence pour le destinataire. Lorsque vous accédez à la page de profil du destinataire, une analyse de la colonne est effectuée pour vérifier toutes les listes de lecture auxquelles le destinataire a accès et les listes de lecture correspondantes sont affichées. Est-ce une façon efficace et sûre de faire les choses? Ou est-ce que compter sur une colonne ne suffit pas?Autorisation basée sur une colonne - sécurisé?

(nb - listes de lecture peuvent être considérés comme similaires aux groupes Facebook)

Merci pour tout conseil

Répondre

1

Je voudrais utiliser une sorte de masque de bits dans la table de relation nm Je devine est entre User et PlayList (ie une table nommée UserPlaylist, car 1 utilisateur peut avoir accès à plus de 1 playlist et vice versa 1 playlist être accessible par plus d'un utilisateur). Si vous définissez les niveaux d'autorisation nécessaires à l'avance (par exemple 0 = pas d'accès, 1 = lecture, 2 = écriture, etc.), vous pouvez simplement ajouter une colonne à la table UserPlayList, qui représente le niveau d'accès. Ainsi, la table UserPlaylist aura 2 colonnes de clé étrangère dont la combinaison doit être unique (ie définir la clé primaire comme étant les 2 colonnes de clé étrangère) et une colonne qui contient le niveau d'accès sous la forme d'un bit/entier

+1

Ma table d'autorisation est essentiellement la table UserPlaylist, mais j'avais une table PK supplémentaire (incrementing int) pour chaque enregistrement. Je vais supprimer cette colonne et utiliser la combinaison de User et Playlist comme PK. Merci – keyboardP

1

donc l'autorisation a des clés étrangères à l'utilisateur et liste de lecture. Y a-t-il une raison pour que la troisième colonne spécifie le niveau d'autorisation? Cela semble être le cas: Si une ligne existe dans Permission, l'utilisateur est autorisé à accéder à la playlist.

Sinon, cela me semble bien.

+0

Il se peut que j'utilise trois paramètres (aucun, lecture et écriture), de sorte que la troisième colonne spécifie le paramètre. Merci – keyboardP

Questions connexes