Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Une façon de contrôler l’accès dans une Razor application Pages consiste à utiliser des conventions d’autorisation au démarrage. Ces conventions permettent à l’application d’autoriser les utilisateurs et d’autoriser les utilisateurs anonymes à accéder à des pages ou dossiers individuels de pages. Les conventions décrites dans cet article appliquent automatiquement des filtres d’autorisation pour contrôler l’accès.
Afficher ou télécharger un exemple de code (comment télécharger)
L’exemple d’application utilise cookie l’authentification sans ASP.NET Core Identity. Pour utiliser ASP.NET Core Identity, suivez les instructions de l’introduction à Identity ASP.NET Core.
Exiger l’autorisation d’accéder à une page
Utilisez la AuthorizePage convention pour ajouter une AuthorizeFilter à la page au chemin spécifié :
builder.Services.AddRazorPages(options =>
{
options.Conventions.AuthorizePage("/Contact");
options.Conventions.AuthorizeFolder("/Private");
options.Conventions.AllowAnonymousToPage("/Private/PublicPage");
options.Conventions.AllowAnonymousToFolder("/Private/PublicPages");
});
services.AddRazorPages(options =>
{
options.Conventions.AuthorizePage("/Contact");
options.Conventions.AuthorizeFolder("/Private");
options.Conventions.AllowAnonymousToPage("/Private/PublicPage");
options.Conventions.AllowAnonymousToFolder("/Private/PublicPages");
});
services.AddMvc()
.AddRazorPagesOptions(options =>
{
options.Conventions.AuthorizePage("/Contact");
options.Conventions.AuthorizeFolder("/Private");
options.Conventions.AllowAnonymousToPage("/Private/PublicPage");
options.Conventions.AllowAnonymousToFolder("/Private/PublicPages");
})
.SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
Le chemin spécifié est le chemin du moteur d’affichage, qui est le Razor chemin d’accès relatif des pages sans extension et contenant uniquement des barres obliques.
Pour spécifier une stratégie d’autorisation, utilisez une AuthorizePage surcharge :
options.Conventions.AuthorizePage("/Contact", "AtLeast21");
Note
Une AuthorizeFilter peut être appliquée à une classe de modèle de page avec l’attribut [Authorize] de filtre. Pour plus d’informations, consultez les méthodes de filtrage pour Razor les Pages dans ASP.NET Core.
Exiger l’autorisation d’accéder à un dossier de pages
Utilisez la AuthorizeFolder convention pour ajouter une AuthorizeFilter à toutes les pages d’un dossier au chemin d’accès spécifié :
builder.Services.AddRazorPages(options =>
{
options.Conventions.AuthorizePage("/Contact");
options.Conventions.AuthorizeFolder("/Private");
options.Conventions.AllowAnonymousToPage("/Private/PublicPage");
options.Conventions.AllowAnonymousToFolder("/Private/PublicPages");
});
services.AddRazorPages(options =>
{
options.Conventions.AuthorizePage("/Contact");
options.Conventions.AuthorizeFolder("/Private");
options.Conventions.AllowAnonymousToPage("/Private/PublicPage");
options.Conventions.AllowAnonymousToFolder("/Private/PublicPages");
});
services.AddMvc()
.AddRazorPagesOptions(options =>
{
options.Conventions.AuthorizePage("/Contact");
options.Conventions.AuthorizeFolder("/Private");
options.Conventions.AllowAnonymousToPage("/Private/PublicPage");
options.Conventions.AllowAnonymousToFolder("/Private/PublicPages");
})
.SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
Le chemin d’accès spécifié est le chemin du moteur d’affichage, qui est le Razor chemin d’accès relatif des pages contenant uniquement les barres obliques.
Pour spécifier une stratégie d’autorisation, utilisez une AuthorizeFolder surcharge :
options.Conventions.AuthorizeFolder("/Private", "AtLeast21");
Exiger l’autorisation d’accéder à une page de zone
Utilisez la AuthorizeAreaPage convention pour ajouter une AuthorizeFilter à la page de zone sur le chemin d’accès spécifié :
options.Conventions.AuthorizeAreaPage("Identity", "/Manage/Accounts");
Le nom de la page est le chemin d’accès du fichier sans extension par rapport au répertoire racine des pages pour la zone spécifiée. Par exemple, le nom de la page du fichier Areas/Identity/Pages/Manage/Accounts.cshtml est /Manage/Accounts.
Pour spécifier une stratégie d’autorisation, utilisez une AuthorizeAreaPage surcharge :
options.Conventions.AuthorizeAreaPage("Identity", "/Manage/Accounts", "AtLeast21");
Exiger l’autorisation d’accéder à un dossier de zones
Utilisez la convention AuthorizeAreaFolder pour ajouter un AuthorizeFilter à toutes les zones d’un dossier au chemin spécifié.
options.Conventions.AuthorizeAreaFolder("Identity", "/Manage");
Le chemin d’accès au dossier est le chemin d’accès du dossier par rapport au répertoire racine des pages de la zone spécifiée. Par exemple, le chemin d’accès au dossier pour les fichiers sous Areas/Identity/Pages/Manage/ est /Manage.
Pour spécifier une stratégie d’autorisation, utilisez une AuthorizeAreaFolder surcharge :
options.Conventions.AuthorizeAreaFolder("Identity", "/Manage", "AtLeast21");
Autoriser l’accès anonyme à une page
Utilisez la AllowAnonymousToPage convention pour ajouter un AllowAnonymousFilter à une page au chemin d’accès spécifié :
builder.Services.AddRazorPages(options =>
{
options.Conventions.AuthorizePage("/Contact");
options.Conventions.AuthorizeFolder("/Private");
options.Conventions.AllowAnonymousToPage("/Private/PublicPage");
options.Conventions.AllowAnonymousToFolder("/Private/PublicPages");
});
services.AddRazorPages(options =>
{
options.Conventions.AuthorizePage("/Contact");
options.Conventions.AuthorizeFolder("/Private");
options.Conventions.AllowAnonymousToPage("/Private/PublicPage");
options.Conventions.AllowAnonymousToFolder("/Private/PublicPages");
});
services.AddMvc()
.AddRazorPagesOptions(options =>
{
options.Conventions.AuthorizePage("/Contact");
options.Conventions.AuthorizeFolder("/Private");
options.Conventions.AllowAnonymousToPage("/Private/PublicPage");
options.Conventions.AllowAnonymousToFolder("/Private/PublicPages");
})
.SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
Le chemin spécifié est le chemin du moteur d’affichage, qui est le Razor chemin d’accès relatif des pages sans extension et contenant uniquement des barres obliques.
Autoriser l’accès anonyme à un dossier de pages
Utilisez la AllowAnonymousToFolder convention pour ajouter une AllowAnonymousFilter à toutes les pages d’un dossier au chemin d’accès spécifié :
builder.Services.AddRazorPages(options =>
{
options.Conventions.AuthorizePage("/Contact");
options.Conventions.AuthorizeFolder("/Private");
options.Conventions.AllowAnonymousToPage("/Private/PublicPage");
options.Conventions.AllowAnonymousToFolder("/Private/PublicPages");
});
services.AddRazorPages(options =>
{
options.Conventions.AuthorizePage("/Contact");
options.Conventions.AuthorizeFolder("/Private");
options.Conventions.AllowAnonymousToPage("/Private/PublicPage");
options.Conventions.AllowAnonymousToFolder("/Private/PublicPages");
});
services.AddMvc()
.AddRazorPagesOptions(options =>
{
options.Conventions.AuthorizePage("/Contact");
options.Conventions.AuthorizeFolder("/Private");
options.Conventions.AllowAnonymousToPage("/Private/PublicPage");
options.Conventions.AllowAnonymousToFolder("/Private/PublicPages");
})
.SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
Le chemin spécifié est le chemin du moteur d’affichage, qui est le Razor chemin d’accès relatif des pages sans extension et contenant uniquement des barres obliques.
Remarque sur la combinaison de l’accès autorisé et anonyme
L’application peut spécifier qu’un dossier de pages nécessite une autorisation et qu’une page dans ce dossier autorise l’accès anonyme :
// This works.
.AuthorizeFolder("/Private").AllowAnonymousToPage("/Private/Public")
Toutefois, l’inverse n’est pas valide. L’application ne peut pas déclarer un dossier de pages pour l’accès anonyme et spécifier une page dans ce dossier qui nécessite une autorisation :
// This doesn't work!
.AllowAnonymousToFolder("/Public").AuthorizePage("/Public/Private")
L’autorisation requise sur la page privée échoue. Lorsque les deux AllowAnonymousFilter et AuthorizeFilter sont appliqués à la page, le AllowAnonymousFilter prend la priorité et contrôle l'accès.