2009-09-10 9 views
0

Nous voulons empêcher les autres utilisateurs de modifier le profil d'autres utilisateurs, tout en permettant à un superUtilisateur de gérer tous les profils. Je ne connais pas la meilleure façon de le faire, je suis sûr que je peux l'accomplir, je cherche principalement la meilleure façon ou la meilleure approche. Je pensais mettre un IF avant la ligne ci-dessous qui montrera cette ligne dans cette condition, mais je ne pense pas que ce soit le meilleur moyen, car les autres utilisateurs peuvent deviner l'URL d'édition comme: domain.com/user/edit/5 par exemple. Nous utilisons: ASP.NET MVC, base de données SQL, et ADO.NET pour la base de données. Nous utilisons: .NET. Aussi: abonnement OpenID.Comment empêcher un utilisateur de modifier d'autres profils que son propre contenu dans l'application Web MVC.NET?

Répondre

3

Vous devrez écrire du code dans l'action du contrôleur. Fondamentalement quelque chose comme:

MembershipUser user = Membership.GetUser(); 

if (!User.IsInRole("Administrator") && (user.ProviderUserKey != id)) 
    return View("Unauthorized"); 

Dans votre cas pour OpenID, il fonctionnera à peu près la même chose. On suppose cette pseudo-code:

var user = GetLoggedInUser(); 

if (!IsAdmin(user) && (user.UserID != id)) 
    return View("Unauthorized"); 

GetLoggedInUser obtient l'objet utilisateur pour l'utilisateur actuel, et IsAdmin chiffres si un objet utilisateur est un administrateur.

+0

Merci GalcticCowboy: Je suppose que j'aurai besoin d'implémenter des rôles dans ma base de données puisque je n'utilise pas le framework d'adhésion ASP.NET. J'utilise actuellement OpenID. Merci – Geo

Questions connexes