ASP.NET Core MVC站点级[Authorize]:如何全站锁定内部Web应用
ASP.NET 全站强制身份验证方案
要实现全站锁定(所有页面默认需要身份验证),最简洁的方式是全局注册授权过滤器,无需给每个控制器手动添加[Authorize]特性,具体分框架版本说明:
.NET 6+(Top-level Statements 模式)
在Program.cs中配置控制器服务时,添加全局授权策略:
builder.Services.AddControllersWithViews(options => { // 创建要求用户必须已认证的授权策略 var authPolicy = new AuthorizationPolicyBuilder() .RequireAuthenticatedUser() .Build(); // 将策略添加为全局过滤器 options.Filters.Add(new AuthorizeFilter(authPolicy)); });
.NET Framework / .NET 5 及更早版本
在Startup.cs的ConfigureServices方法中配置:
public void ConfigureServices(IServiceCollection services) { services.AddMvc(options => { var authPolicy = new AuthorizationPolicyBuilder() .RequireAuthenticatedUser() .Build(); options.Filters.Add(new AuthorizeFilter(authPolicy)); }); }
注意事项
- 全局配置后,所有控制器的所有Action默认都会要求用户已认证,无需再逐个添加
[Authorize]。 - 如果有个别需要公开访问的页面(比如登录页),只需在对应的控制器或Action上添加
[AllowAnonymous]特性即可,该特性会覆盖全局授权策略。
内容的提问来源于stack exchange,提问作者dath.vg
相关产品推荐
相关产品推荐

