Comment ajouter "passer le paramètre' à AuthorizeAttribute personnalisé
Je tiens à assurer de contrôleur de l'action, de sorte que seuls les utilisateurs avec le rôle "Admin" peut obtenir.
Je n'utilise pas de Rôle/fournisseur d'Appartenance à l'ensemble, tout est personnalisé.
J'ai fait jusqu'à présent:
public class CustomAuthorizeAttribute : AuthorizeAttribute
{
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
var isAuthorized = base.AuthorizeCore(httpContext);
if (!isAuthorized)
return false;
string username = httpContext.User.Identity.Name;
UserRepository repo = new UserRepository();
return repo.IsUserInRole(username, "Admin");
}
}
Avis que j'ai codé en dur "Admin" ici.
Je veux que ce soit dynamique.
Ce travail maintenant:
[CustomAuthorize]
public ActionResult RestrictedArea()...
Mais je veux quelque chose comme ceci:
[CustomAuthorize(Roles = "Admin")]
public ActionResult RestrictedArea()
OriginalL'auteur 1110 | 2013-02-23
Vous devez vous connecter pour publier un commentaire.
AuthorizeAttribute
a déjàRoles
une propriété qui peut être utilisée à cette fin:this.Roles
valeurnull
Avez-vous passer la valeur à
Roles
variable[CustomAuthorize(Roles="admin")]
?oui Tout est même
Malheureusement, sans ton code je ne peux pas vous aider. Je peux cependant vous donner des conseils. Essayez d'abord l'étape-par-étape de débogage (y compris le point d'arrêt sur
Roles
setter, qui nécessitera provding personnaliséset
méthode, pas automatique que nous avons ici) et en essayant de reporduce dans une nouvelle (minimale) de projet.AuthorizeAttribute a déjà une propriété "Rôles". supprimer la chaîne publique Rôles { get; set; } et laisser le reste comme il est
OriginalL'auteur Zbigniew