programing

MVC Core 모든 작업에 대해 전역 인증을 강제 / 설정하는 방법은 무엇입니까?

goodcopy 2021. 1. 14. 23:17
반응형

MVC Core 모든 작업에 대해 전역 인증을 강제 / 설정하는 방법은 무엇입니까?


MVC Core의 모든 작업에 대해 전역 인증을 강제 / 설정하는 방법은 무엇입니까?

글로벌 필터를 등록하는 방법을 알고 있습니다. 예를 들면 다음과 같습니다.

Setup.cs

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

그리고 이것은 잘 작동하지만 Authorize에 대해 동일하게 추가 할 수 없습니다.

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

오류가 있습니다.

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

(방법 .Add()IFilterMetadata유형이 필요 합니다)


나는 비슷한 질문에서 이것이 MVC4-5에서 작동한다는 것을 알고 있습니다. 따라서 MVC Core에서 무언가 변경되어야합니다.

누군가 어떤 아이디어가 있습니까?


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

StartUp.cs의 ConfigureServices에 다음을 추가합니다. 이는 토큰 유효성 검사를위한 것이며 모든 호출이 토큰으로 확인되도록합니다.

services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
            .AddJwtBearer(options =>
            {
                options.TokenValidationParameters = new TokenValidationParameters
                {
                    ValidateIssuerSigningKey = true,
                    IssuerSigningKey = new SymmetricSecurityKey(key),
                    ValidateIssuer = false,
                    ValidateAudience = false
                };
            });

services.AddMvc(options =>
        {
            var policy = new AuthorizationPolicyBuilder()
                .RequireAuthenticatedUser()
                .Build();
            options.Filters.Add(new AuthorizeFilter(policy));
        })`

이것을 StartUp.cs의 Configure 메서드에 추가합니다.

app.UseAuthentication();

참고 : 필요하지 않은 경우 [AllowAnonymous]를 사용하십시오.

참조 URL : https://stackoverflow.com/questions/36413476/mvc-core-how-to-force-set-global-authorization-for-all-actions

반응형