36

如何強制/設置MVC Core中所有操作的全局授權?MVC核心如何強制/設置所有操作的全局授權?

我知道如何註冊全局過濾器 - 比如我有:

Setup.cs 

services.AddMvc(options => 
{ 
    options.Filters.Add(new RequireHttpsAttribute()); 
}); 

,這工作得很好,但我不能添加相同的授權:

options.Filters.Add(new AuthorizeAttribute());

我有錯誤:

Cannot convert from 'Microsoft.AspNet.Authorization.AuthorizeAttribute()' to 'System.Type'

(方法.Add()需要IFilterMetadata型)


我知道 - 從類似的問題 - 這適用於MVC4-5 ......因此,一些必須改變對MVC核心...

有人有任何想法?

回答

68
services.AddMvc(config => 
{ 
    var policy = new AuthorizationPolicyBuilder() 
        .RequireAuthenticatedUser() 
        .Build(); 
    config.Filters.Add(new AuthorizeFilter(policy)); 
}); 
+0

謝謝你的答案:) –

+0

讓我問 - 在你看來 - 是它的好做法?我必須做WebApp供內部使用,並且我需要確保它不能公開。 –

+0

也許還有一個問題 - 那個(全局)解決方案是否會對性能產生負面影響(與每個類使用AuthorizeAttribute相比)? –

相關問題