Προγραμματισμός

Πώς να χρησιμοποιήσετε φίλτρα δράσης στο ASP.NET Core MVC

Τα φίλτρα στο ASP.NET Core MVC μας επιτρέπουν να εκτελέσουμε κώδικα πριν ή μετά από συγκεκριμένα στάδια του αγωγού επεξεργασίας αιτήσεων. Οι διαφορετικοί τύποι φίλτρων αντιστοιχούν στα διαφορετικά στάδια του αγωγού, από την έγκριση έως την εκτέλεση αποτελεσμάτων.

Για παράδειγμα, μπορείτε να αξιοποιήσετε τα φίλτρα ενεργειών στο ASP.NET Core MVC για να εκτελέσετε προσαρμοσμένο κώδικα πριν και μετά την εκτέλεση μιας μεθόδου δράσης. Αυτό το άρθρο παρουσιάζει μια συζήτηση για τα ενσωματωμένα φίλτρα στο ASP.NET Core MVC, γιατί είναι χρήσιμα και πώς μπορούμε να χρησιμοποιήσουμε φίλτρα δράσης στις εφαρμογές ASP.NET Core.

Φίλτρα σε ASP.NET Core MVC

Το ASP.NET Core MVC περιέχει πολλά ενσωματωμένα φίλτρα. Αυτά περιλαμβάνουν τα ακόλουθα:

  • Φίλτρα δράσης. Αυτά εκτελούνται πριν και μετά την εκτέλεση μιας μεθόδου δράσης ενός ελεγκτή.
  • Φίλτρα εξουσιοδότησης. Αυτά τα φίλτρα εκτελούνται στην αρχή του αγωγού αιτήσεων. Χρησιμοποιούνται για την επικύρωση των διαπιστευτηρίων ενός χρήστη για να ελέγξουν αν ο χρήστης είναι εξουσιοδοτημένος.
  • Φίλτρα πόρων Αυτά τα φίλτρα εκτελούνται μετά την εξουσιοδότηση και πριν από τη σύνδεση του μοντέλου. Μπορείτε να επωφεληθείτε από το ResourceFilters για να εφαρμόσετε την προσωρινή αποθήκευση.
  • Αποτέλεσμα φίλτρων. Αυτά τα φίλτρα χρησιμοποιούνται για την εκτέλεση κώδικα πριν και μετά την εκτέλεση του IActionResult μιας μεθόδου δράσης.
  • Φίλτρα εξαίρεσης. Αυτά τα φίλτρα χρησιμοποιούνται για τον χειρισμό τυχόν εξαιρέσεων που συμβαίνουν στον αγωγό. Μπορείτε να εκμεταλλευτείτε το ExceptionFilters για να εκτελέσετε προσαρμοσμένο κώδικα όταν έχει προκύψει εξαίρεση.

Η επιλογή του τύπου φίλτρου για χρήση εξαρτάται από το τι προσπαθείτε να επιτύχετε. Για παράδειγμα, εάν προσπαθείτε να βραχυκυκλώσετε ένα αίτημα (δηλαδή, να σταματήσετε την εκτέλεση μιας μεθόδου ενέργειας και να επιστρέψετε ένα αποτέλεσμα πρόωρα), θα χρησιμοποιούσατε ένα φίλτρο πόρων. Εναλλακτικά, εάν προσπαθείτε να αλλάξετε τις παραμέτρους της μεθόδου δράσης και το αποτέλεσμα που επιστρέφεται από τη μέθοδο ενέργειας, θα χρησιμοποιήσετε ένα φίλτρο ενέργειας.

Η κλάση ActionFilterAttribute εφαρμόζει τις διεπαφές IActionFilter, IAsyncActionFilter, IResultFilter, IAsyncResultFilter και IOrderedFilter. Μπορείτε να εκμεταλλευτείτε αυτήν την τάξη για να εφαρμόσετε ένα φίλτρο μεθόδου, ένα φίλτρο ελεγκτή ή ένα καθολικό φίλτρο. Θα το εξετάσουμε αργότερα σε αυτό το άρθρο.

Δημιουργήστε ένα έργο ASP.NET Core Web API στο Visual Studio 2017

Αρχικά, ας δημιουργήσουμε ένα έργο ASP.NET Core Web API στο Visual Studio. Εάν το Visual Studio 2017 λειτουργεί και λειτουργεί στο σύστημά σας, ακολουθήστε τα παρακάτω βήματα για να δημιουργήσετε ένα έργο ASP.NET Core MVC.

  1. Ξεκινήστε το Visual Studio 2017 IDE.
  2. Κάντε κλικ στο Αρχείο> Νέο> Έργο.
  3. Επιλέξτε "ASP.NET Core Web Application (.NET Core)" από τη λίστα των προτύπων που εμφανίζονται.
  4. Καθορίστε ένα όνομα για το έργο.
  5. Κάντε κλικ στο OK για να αποθηκεύσετε το έργο.
  6. Θα εμφανιστεί ένα νέο παράθυρο, "Νέο .NET Core Web Application ...".
  7. Επιλέξτε .NET Core ως χρόνο εκτέλεσης και ASP.NET Core 2.1 (ή νεότερη έκδοση) από την αναπτυσσόμενη λίστα στην κορυφή.
  8. Επιλέξτε "Web Application (Model-View-Controller)" ως πρότυπο έργου.
  9. Βεβαιωθείτε ότι τα πλαίσια ελέγχου "Ενεργοποίηση υποστήριξης Docker" και "Διαμόρφωση για HTTPS" δεν είναι επιλεγμένα. Δεν θα χρησιμοποιούμε αυτές τις δυνατότητες εδώ.
  10. Βεβαιωθείτε ότι έχει επιλεγεί "Χωρίς έλεγχο ταυτότητας". Δεν θα χρησιμοποιήσουμε τον έλεγχο ταυτότητας ούτε εδώ.

Αυτό θα δημιουργήσει ένα νέο έργο ASP.NET Core MVC στο Visual Studio. Θα χρησιμοποιήσουμε αυτό το έργο για να εφαρμόσουμε τα φίλτρα δράσης μας στις ενότητες που ακολουθούν.

Δημιουργήστε ένα προσαρμοσμένο φίλτρο ενέργειας στο ASP.NET Core MVC

Μπορείτε να επωφεληθείτε από τα προσαρμοσμένα φίλτρα ενεργειών για την εκτέλεση επαναχρησιμοποιήσιμου κώδικα πριν ή μετά την εκτέλεση μιας μεθόδου ενέργειας. Μπορείτε να επεκτείνετε τις ακόλουθες αφηρημένες βασικές κατηγορίες για να δημιουργήσετε προσαρμοσμένα φίλτρα. Σημειώστε ότι καθεμία από αυτές τις αφηρημένες τάξεις επεκτείνει την κλάση χαρακτηριστικών.

  • ActionFilterAttribute
  • ResultFilterAttribute
  • ΕξαίρεσηFilterAttribute
  • ServiceFilterAttribute
  • ΤύποςFilterAttribute

Μπορείτε επίσης να επεκτείνετε τη διεπαφή IActionFilter και να εφαρμόσετε τις μεθόδους της για να δημιουργήσετε ένα προσαρμοσμένο φίλτρο. Μπορείτε να δημιουργήσετε συγχρονισμένα και ασύγχρονα φίλτρα.

Δημιουργήστε ένα φίλτρο σύγχρονης δράσης στο ASP.NET Core MVC

Το ακόλουθο απόσπασμα κώδικα δείχνει πώς μπορεί να δημιουργηθεί ένα φίλτρο συγχρονισμένης ενέργειας επεκτείνοντας τη διεπαφή IActionFilter και εφαρμόζοντας τις μεθόδους OnActionExecuting και OnActionExecuted.

δημόσια τάξη SimpleActionFilter: IActionFilter

    {

δημόσιο κενό OnActionExecuting (περιβάλλον ActionExecutingContext)

        {

// αυτή η μέθοδος θα εκτελεστεί πριν από την εκτέλεση μιας μεθόδου δράσης

        }

δημόσιο κενό OnActionExecuted (πλαίσιο ActionExecutedContext)

        {

// αυτή η μέθοδος θα εκτελεστεί μετά την εκτέλεση μιας μεθόδου δράσης

        }

    }

Δημιουργήστε ένα ασύγχρονο φίλτρο δράσης στο ASP.NET Core MVC

Για να δημιουργήσετε ένα φίλτρο ασύγχρονης δράσης, μπορείτε να επεκτείνετε τη διεπαφή IAsyncActionFilter και να εφαρμόσετε τη μέθοδο OnActionExecutionAsync όπως φαίνεται στο παρακάτω απόσπασμα κώδικα.

δημόσια τάξη SimpleAsyncActionFilter: IAsyncActionFilter

    {

public async Task OnActionExecutionAsync (περιβάλλον ActionExecutingContext,

ActionExecutionDelegate επόμενο)

        {

// ο κωδικός που γράφεται εδώ θα εκτελεστεί πριν από την εκτέλεση μιας μεθόδου δράσης

περιμένετε επόμενο ();

// ο κωδικός που γράφεται εδώ θα εκτελεστεί μετά την εκτέλεση μιας μεθόδου δράσης

        }

    }

Προσθέστε ένα φίλτρο ενέργειας στη μέθοδο ConfigureServices στο ASP.NET Core

Μπορείτε να προσθέσετε φίλτρα σε διαφορετικά επίπεδα εμβέλειας. Αυτά περιλαμβάνουν το πεδίο δράσης, το πεδίο ελέγχου και το παγκόσμιο πεδίο. Το παρακάτω απόσπασμα κώδικα δείχνει πώς μπορείτε να προσθέσετε ένα φίλτρο στο καθολικό εύρος. Σημειώστε πώς προστίθεται το φίλτρο προσαρμοσμένης ενέργειας που εφαρμόσαμε παραπάνω στη συλλογή φίλτρων στη μέθοδο ConfigureServices της κλάσης εκκίνησης. Σημειώστε ότι το φίλτρο προστίθεται στη συλλογή φίλτρων κατά περίπτωση.

services.AddMvc (επιλογές =>

            {

options.Filters.Add (νέο SimpleAsyncActionFilter ());

SetCompatibilityVersion (CompatibilityVersion.Version_2_1);

Μπορείτε επίσης να προσθέσετε το φίλτρο κατά τύπο όπως φαίνεται στο απόσπασμα κώδικα παρακάτω.

services.AddMvc (επιλογές =>

            {

options.Filters.Add (typeof (SimpleAsyncActionFilter));

SetCompatibilityVersion (CompatibilityVersion.Version_2_1);

Τα φίλτρα σάς δίνουν τη δυνατότητα να εκτελέσετε κώδικα πριν ή μετά από ένα συγκεκριμένο σημείο στον αγωγό επεξεργασίας αιτημάτων. Μία από τις μεγάλες νέες βελτιώσεις στα φίλτρα δράσης στο ASP.NET Core MVC είναι η δυνατότητα καθορισμού της σειράς εκτέλεσης του φίλτρου στον αγωγό αιτήματος HTTP. Θα εξετάσουμε αυτό και πολλά άλλα χαρακτηριστικά φίλτρων στο ASP.NET Core MVC σε μια επερχόμενη δημοσίευση.

$config[zx-auto] not found$config[zx-overlay] not found