Back to top

Blazor Server App SignOutAsync() 후에 AuthorizeView가 업데이트 되지 않는 문제

작성날짜 2025/01/01

AuthorizeView


ASPNET Core는 사용자의 권한에 따라 표시되는 UI를 다르게 하기 위해서 AuthorizeView 클래스를 제공한다. 

<AuthorizeView Roles="ADMIN">
    <Authorized>
        <h1>You are Admin</h1>
    </Authorized>
    <NotAuthorized>
        <h1>You are NOT Admin</h1>
    </NotAuthorized>
</AuthorizeView>

실제로는 좀 더 설정해야 할 게 많지만 일단 Razor페이지는 이렇게 구성된다. 이 기능을 이용하면 관리자 페이지로 가는 버튼을 관리자로 로그인 했을 때만 표시해 주는 등으로 사용할 수 있다.


하지만 Blazor에서 로그아웃을 해도 AuthorizeView의 내용이 변하지 않는 문제가 있었다. 물론 내부적으론 이미 로그아웃 처리가 되어서 버튼을 눌러도 작동은 하지 않았지만 상당히 신경 쓰이는 문제였다.


해결법을 이리저리 찾아서 테스트해봐도 도통 해결이 되지 않았는데...

https://www.reddit.com/r/Blazor/comments/1hi206f/component_will_not_refresh_if_rendermode_is/

위 글에서처럼 해당 처리를 하는 컴포넌트에서 InteractiveServer 모드를 제거하니 정상적으로 작동했다... 이거 해결하려고 컴포넌트 분리하기가 귀찮아서 가장 마지막까지 미뤄뒀는데 이것으로 해결 됐다.


같은 문제를 겪으시는 분이 계시면 귀찮아도 컴포넌트를 분리하고 Logout 버튼은 InteractiveServer 모드를 제거하시면 될 것 같습니다!


관련글

Blazor Pagenation 구현Blazor에서 mainlayout의 요소를 다루기Blazor Server app에서 Unity WebGL 빌드 호스트
Blazor Server App SignOutAsync() 후에 AuthorizeView가 업데이트 되지 않는 문제
An unhandled error has occurred. Reload 🗙