기본 프로젝트 FatchData.razor 페이지에서 [Authorize] 활용 방법?

안녕하세요!

FatchData.razor 페이지를 로그인 없이도 동작하도록 하고 싶습니다.
(Blazor 기본 프로젝트에 포함된 FatchData.razor 페이지)

그래서 Authorize 부분이 관련 있는 것 같아 화면과 컨트롤러에서 각각 [Authorize]를 제거했습니다.

화면

@page "/fetchdata"
@using Microsoft.AspNetCore.Authorization
@using Microsoft.AspNetCore.Components.WebAssembly.Authentication
@using BlazorApp2.Shared
// @attribute [Authorize] 

서버

// [Authorize]
[ApiController]
[Route("[controller]")]
public class WeatherForecastController : ControllerBase
{
   //
}

[Authorize] 어트리뷰트를 지우는 것 말고도 처리해야 할 것이 있을까요?

읽어주셔서 감사합니다.
:smile:


(프로젝트 생성정보)

image


(에러 화면)

image


(에러 코드)

image

에러가 나는 이유

builder.Services.AddHttpClient("BlazorApp3.ServerAPI", client => client.BaseAddress = new Uri(builder.HostEnvironment.BaseAddress))
    .AddHttpMessageHandler<BaseAddressAuthorizationMessageHandler>();

FetchData.razor에서 위의 Http클라이언트를 이용합니다. Handler를 통해서 로그인페이지로 이동하게 됩니다.

builder.Services.AddHttpClient("WebAPI.NoAuthenticationClient",
    client => client.BaseAddress = new Uri(builder.HostEnvironment.BaseAddress));

위 코드를 추가하여 HttpClient를 추가합니다.

[FetchData.razor 페이지]
@attribute [Authorize] >> 삭제
@inject IHttpClientFactory ClientFactory >> 추가

@code {
        var client = ClientFactory.CreateClient("WebAPI.NoAuthenticationClient");

        forecasts = await client.GetFromJsonAsync<WeatherForecast[]>(
            "WeatherForecast");
}

그리고, 서버의 WeatherForecastController의 [Authorize] >> [AllowAnonymous]로 바꾸게 되면 됩니다.

ASP.NET Core Blazor WebAssembly 추가 보안 시나리오

3개의 좋아요

@_jeonghwan 앗 답변 감사합니다!!

밤에 적용 해보고 답글 달아볼게요.
좋은 설명 감사드립니다.

:smile: