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

黄舟
Libérer: 2017-03-06 11:03:01
original
1762 Les gens l'ont consulté

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="删除"/>
}
Copier après la connexion


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>
Copier après la connexion


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; }
}
Copier après la connexion


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
{
......
}
Copier après la connexion


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; } 
.....
}
Copier après la connexion


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();
        }
      }
}
Copier après la connexion

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) !


Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!