Heim  >  Artikel  >  Backend-Entwicklung  >  Das Beispiel für den Asp.net Core MVC-Berechtigungssteuerungscode zum Steuern von Betriebsberechtigungen in der Ansicht wird ausführlich vorgestellt

Das Beispiel für den Asp.net Core MVC-Berechtigungssteuerungscode zum Steuern von Betriebsberechtigungen in der Ansicht wird ausführlich vorgestellt

黄舟
黄舟Original
2017-03-06 11:03:011770Durchsuche

In diesem Artikel wird hauptsächlich die ASP.NET-Kern-MVC-Berechtigungssteuerung vorgestellt: Steuern von Betriebsberechtigungen in der Ansicht. Es hat einen sehr guten Referenzwert. Schauen wir es uns mit dem Editor an.

Bietet ein Berechtigungsüberprüfungs-Framework im asp.net-Kern-MVC. Danach wird die Berechtigungsüberprüfungslogik automatisch ausgeführt. In einigen Fällen müssen wir jedoch möglicherweise die Berechtigungen im Code oder in der Ansicht manuell ermitteln. Wir werden jetzt die spezifische Betriebsmethode vorstellen.

Wenn Sie feststellen möchten, ob der aktuelle Benutzer über eine bestimmte Berechtigung in der Controller-Methode verfügt, können Sie direkt die Methode HttpContext.User.HasClaim (string cliamtype, string cliamvalue) verwenden, um zu bestimmen, ob diese Methode einen Bool-Typ zurückgibt und gibt true zurück. Zeigt an, dass die Berechtigung vorhanden ist, andernfalls nicht.

In der Ansicht müssen wir häufig die Berechtigungen einer bestimmten Schaltfläche oder eines Hyperlinks steuern. Wenn die Schaltfläche eine Berechtigung hat, wird sie angezeigt, andernfalls ist dies unrealistisch. Wie können wir also einen solchen Effekt erzielen? Die Methode wird wie folgt eingeführt:

1. Verwenden Sie HttpContext.User.HasClaim (string cliamtype, string cliamvalue) direkt in der Ansicht, um die Berechtigungen zu bestimmen, und steuern Sie dann, ob die Schaltfläche angezeigt wird


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


Der obige Code wird in die Ansicht geschrieben und zeigt an, dass die Schaltfläche „Löschen“ angezeigt wird, wenn der Benutzer über die Löschberechtigung verfügt wird angezeigt. So werden beispielsweise alle Orte, die verifiziert werden müssen, in diesem Format geschrieben.

2. Die erste Methode kann mit Hilfe von taghelper, einer neuen Funktion von asp.net core mvc, vereinfacht werden. Was taghelper ist und welche Funktion es hat, werden wir Ihnen hier nicht vorstellen Sie können es auf Baidu oder Google durchsuchen. Hier stellen wir direkt vor, wie Sie den Taghelper für die Berechtigungsüberprüfung anpassen.


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


Der obige Code ist unser endgültiger Effekt und zeigt an, dass dieser Hyperlink verfügbar ist, wenn der Benutzer Anspruch hat( type=goods, value=edit)-Berechtigungen. Im Folgenden stellen wir vor, wie dieser Taghelper implementiert wird.

1) Zuerst definieren wir eine Klasse, abgeleitet von der TagHelper-Klasse, fügen die Anspruchsattributdefinition hinzu und fügen ViewContext hinzu


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


2) Unser Berechtigungskontroll-Taghelper gilt nur für Schaltflächen-, a- und Eingabeelemente, daher müssen wir die Funktionen von hinzufügen HtmlTargetElement, der Code lautet wie folgt:


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


3) Umschreiben Verwenden Sie in der Prozessmethode von TagHelper HttpContext.User.HasClaim in der Methode, um Berechtigungen zu ermitteln. Der Zugriff auf HttpContext in der Ansicht muss das ViewContext-Objekt verwenden, daher müssen wir einen ViewContext-Verweis auf die aktuelle TagHelper-Klasse hinzufügen. Der spezifische Code lautet wie folgt:


public class ClaimTagHelper: TagHelper
{
.....

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


Die Grundbedingungen sind erfüllt, und dann erfolgt die Prozessimplementierung, direkt den Code eingeben:


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();
        }
      }
}

Dies ist das Ende der Einführung. Wenn es irgendwelche Mängel gibt, geben Sie uns bitte Ihre Hinweise.

Das Obige ist die detaillierte Einführung des Codebeispiels zur Steuerung von Betriebsberechtigungen in der Ansicht mithilfe der asp.net core mvc-Berechtigungssteuerung. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.org). .php.cn)!


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn