首页 新闻 会员 周边 捐助

ASP.NET Core 中让所有 Controller 登录后才能访问的最简单方法

0
悬赏园豆:50 [已解决问题] 解决于 2020-03-30 21:28

有一个 ASP.NET Core 站点,想让所有 Controller 登录后才能访问,但不想每个 Controller 加 [Authorize] ,请问最简单的实现方法是什么?

dudu的主页 dudu | 高人七级 | 园豆:30757
提问于:2020-03-30 20:17
< >
分享
最佳答案
0

在博文 Globally Require Authenticated Users By Default Using Fallback Policies in ASP.NET Core 中找到了完美答案:

public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddAuthorization(options =>
        {
            options.FallbackPolicy = new AuthorizationPolicyBuilder()
                .RequireAuthenticatedUser()
                .Build();
        });
    }
}
dudu | 高人七级 |园豆:30757 | 2020-03-30 21:27

今天在同事的代码中发现一个更简单的解决方法

app.UseEndpoints(endpoints =>
{
    endpoints.MapControllers().RequireAuthorization();
}
dudu | 园豆:30757 (高人七级) | 2020-03-31 13:09

@dudu:
MapAreaControllerRoute 后面的 RequireAuthorization 不起作用,有没有什么办法

        app.UseRouting();
        app.UseAuthentication();
        app.UseAuthorization();
        app.UseEndpoints(endpoints =>
        {
            endpoints.MapAreaControllerRoute(name: "areas", "areas", pattern: "{area:exists}/{controller=Home}/{action=Index}/{id?}").RequireAuthorization();
            endpoints.MapDefaultControllerRoute().RequireAuthorization();
        });
奶茶爽歪歪 | 园豆:243 (菜鸟二级) | 2020-03-31 18:26

@奶茶爽歪歪: 试试 options.FallbackPolicy

dudu | 园豆:30757 (高人七级) | 2020-03-31 18:58

@dudu: Thanks 有作用了.

奶茶爽歪歪 | 园豆:243 (菜鸟二级) | 2020-03-31 20:25
其他回答(1)
0
services.AddControllersWithViews(options =>
{
    var policy = new AuthorizationPolicyBuilder()
                     .RequireAuthenticatedUser()
                     .Build();

    options.Filters.Add(new AuthorizeFilter(policy));
});
三大神捕之四 | 园豆:55 (初学一级) | 2020-04-01 10:10
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册