如何在Web应用中仅为部分Razor Pages添加Azure Active Directory身份验证
实现Razor Pages应用仅Settings页面需Azure AD身份验证的方案
方案1:直接为Settings页面添加授权特性
- 打开Settings页对应的后端代码文件
Settings.cshtml.cs - 在命名空间引用处添加:
using Microsoft.AspNetCore.Authorization; - 在Settings的PageModel类上添加
[Authorize]特性,示例代码如下:
[Authorize] public class SettingsModel : PageModel { // 页面原有逻辑保持不变 public void OnGet() { } }
该方案实现简单,非常适合单页面授权的场景。
方案2:在启动配置中统一配置页面授权规则
如果不希望授权规则分散在各个PageModel中,可以在应用启动配置里统一约定规则:
- 打开.NET 6+项目的
Program.cs文件,找到AddRazorPages的配置段,修改为如下内容:
builder.Services.AddRazorPages() .AddRazorPagesOptions(options => { // 仅为Settings页面添加身份验证要求 options.Conventions.AuthorizePage("/Settings"); });
- 如果是.NET 5及更早版本,在
Startup.cs的ConfigureServices方法中修改对应配置即可。
注意事项
- 不要在全局配置中添加全局身份验证要求(比如不要在授权中间件后全局配置RequireAuthenticatedUser规则),否则所有页面都会强制要求登录
- 你当前Settings布局页引用的
<partial name="_LoginPartial" />仅用于展示登录/登出按钮,不会影响页面授权逻辑,未登录用户访问Settings页时会自动跳转到Azure AD登录界面,验证通过后才会返回Settings页,其余页面不受影响可正常匿名访问。
内容的提问来源于stack exchange,提问作者Praveen Kumar
相关产品推荐
相关产品推荐

