안녕하세요!
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] 어트리뷰트를 지우는 것 말고도 처리해야 할 것이 있을까요?
읽어주셔서 감사합니다.

(프로젝트 생성정보)
![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 앗 답변 감사합니다!!
밤에 적용 해보고 답글 달아볼게요.
좋은 설명 감사드립니다.
