Maison >développement back-end >Tutoriel C#.Net >L'exemple de code de contrôle des autorisations asp.net core mvc pour contrôler les autorisations d'opération dans la vue est présenté en détail

L'exemple de code de contrôle des autorisations asp.net core mvc pour contrôler les autorisations d'opération dans la vue est présenté en détail

黄舟
黄舟original
2017-03-06 11:03:011815parcourir

Cet article présente principalement le contrôle des autorisations asp.net core mvc : contrôler les autorisations d'opération dans la vue. Il a une très bonne valeur de référence. Jetons-y un coup d'œil avec l'éditeur.

Fournit un cadre de vérification des autorisations dans asp.net core mvc. L'article précédent a expliqué comment configurer le contrôle des autorisations et la configuration des autorisations. Après cela, la logique de vérification des autorisations sera exécutée automatiquement, mais dans certains cas, nous devrons peut-être déterminer manuellement les autorisations dans le code ou la vue. Nous allons maintenant présenter la méthode de fonctionnement spécifique.

Si vous souhaitez déterminer si l'utilisateur actuel dispose d'une certaine autorisation dans la méthode du contrôleur, vous pouvez utiliser directement la méthode HttpContext.User.HasClaim (string cliamtype, string cliamvalue) pour déterminer. Cette méthode renvoie le type booléen. et renvoie true Indique qu'il a l'autorisation, sinon ce n'est pas le cas.

Sur la vue, nous devons souvent contrôler les autorisations d'un certain bouton ou lien hypertexte. Si le bouton a une autorisation, il sera affiché, sinon ce n'est pas réaliste. Alors, comment pouvons-nous obtenir un tel effet ? La méthode est présentée comme suit :

1. Utilisez HttpContext.User.HasClaim (string cliamtype, string cliamvalue) directement dans la vue pour déterminer les autorisations, puis contrôlez si le bouton est affiché


@if(HttpContext.User.HasClaim("User","Delete"))
{
<input type=&#39;button&#39; value="删除"/>
}


Le code ci-dessus est écrit dans la vue, indiquant que si l'utilisateur dispose de l'autorisation de suppression, le bouton de suppression sera affiché. Ainsi, par exemple, tous les endroits qui doivent être vérifiés sont écrits dans ce format.

2. La première méthode peut être simplifiée à l'aide de taghelper, une nouvelle fonctionnalité d'asp.net core mvc Quant à ce qu'est taghelper et sa fonction, nous ne vous le présenterons pas ici. peut le rechercher sur Baidu ou Google, nous présentons ici directement comment personnaliser le taghelper pour la vérification des autorisations.


<a asp-claim="goods,edit" asp-action="addgoods" asp-route-id="@goods.Id" class="btn-icon " title="编辑">
<i class="icon-common-edit icon-pencil"></i></a>


Le code ci-dessus est notre effet final, indiquant que cet hyperlien est disponible lorsque l'utilisateur a une réclamation ( type=goods, value=edit) autorisations. Ci-dessous, nous présenterons comment implémenter ce taghelper.

1) Nous définissons d'abord une classe, dérivée de la classe TagHelper, ajoutons la définition de l'attribut de revendication, puis ajoutons ViewContext


class ClaimTagHelper:TagHelper
{
private const string ClaimAttributeName = "asp-claim";
    public ClaimTagHelper()
    {
    }
    [HtmlAttributeName(ClaimAttributeName)]
    public string Claim { get; set; }
}


2) Notre taghelper de contrôle des autorisations s'applique uniquement aux éléments bouton, a et input, nous devons donc ajouter les fonctionnalités de HtmlTargetElement , le code est le suivant :


[HtmlTargetElement("a", Attributes = ClaimAttributeName)]
  [HtmlTargetElement("button", Attributes = ClaimAttributeName)]
  [HtmlTargetElement("input", Attributes = ClaimAttributeName, TagStructure = TagStructure.WithoutEndTag)]
  public class ClaimTagHelper: TagHelper
{
......
}


3) Réécrire Méthode de processus de TagHelper, utilisez HttpContext.User.HasClaim dans la méthode pour déterminer les autorisations. L'accès à HttpContext dans la vue doit utiliser l'objet ViewContext, nous devons donc ajouter une référence ViewContext à la classe TagHelper actuelle. Le code spécifique est le suivant :


.
public class ClaimTagHelper: TagHelper
{
.....

[HtmlAttributeNotBound]
    [ViewContext]
    public ViewContext ViewContext { get; set; } 
.....
}


Les conditions de base sont remplies, et puis il y a la mise en place du Processus, entrez directement le code :


public override void Process(TagHelperContext context, TagHelperOutput output)
    {
      if (string.IsNullOrEmpty(Claim))
      {
        return;
      }
      string[] claimData = Claim.Split(new char[] { &#39;-&#39; }, StringSplitOptions.RemoveEmptyEntries);
      if (claimData.Length == 1)
      {
        if (!ViewContext.HttpContext.User.HasClaim(m => m.Type == claimData[0]))
        {
          //无权限
          output.SuppressOutput();
        }
      }
      else
      {
        if (!ViewContext.HttpContext.User.HasClaim(m => m.Type == claimData[0] && m.Value == claimData[1]))
        {
          //无权限
          output.SuppressOutput();
        }
      }
}

C'est tout. Merci à tous. S'il y a des lacunes, veuillez nous donner vos conseils.

Ce qui précède est l'introduction détaillée de l'exemple de code de contrôle des autorisations d'opération dans la vue à l'aide du contrôle des autorisations asp.net core mvc. Pour plus de contenu connexe, veuillez prêter attention au site Web chinois PHP (www. .php.cn) !


Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn