[♻️] 로그인 저장데이터 문제 발생시 로직

1. / 로 보내 버리기
This commit is contained in:
SEAN-59 2025-06-23 18:04:38 +09:00
parent 1e563eb576
commit 250aac4b29
6 changed files with 37 additions and 44 deletions

View File

@ -25,11 +25,27 @@ public partial class MainLayout : LayoutComponentBase, IDisposable
// protected bool isIntro => Navigation.ToBaseRelativePath(Navigation.Uri).Equals("am/intro", StringComparison.OrdinalIgnoreCase);
protected override void OnInitialized()
// protected override void OnInitialized()
protected override async Task OnInitializedAsync()
{
LoadingService.OnChange += StateHasChanged;
Navigation.LocationChanged += HandleLocationChanged;
HandleLocationChanged(this, new LocationChangedEventArgs(Navigation.Uri, false));
if (isAcademy)
{
if(!UserStateService.isLogin || UserStateService.UserData == null)
{
Console.WriteLine("로그인 상태가 아닙니다. 초기로 돌립니다.");
if (isIntro)
{
} //await UserStateService.ClearUserStateAsnyc();
else
{
await UserStateService.ClearUserStateAsnyc();
Navigation.NavigateTo("/");
}
}
}
}
// 페이지의 URL이 변경될 때마다 실행되는 이벤트 핸들러

View File

@ -93,23 +93,31 @@ public class UserStateService(StorageService _storageService, SecureService _sec
}
}
public async Task ClearUserData()
public async Task ClearUserStateAsnyc()
{
try
{
await _storageService.RemoveItemAsync("UsDt");
await _storageService.RemoveItemAsync("IsLogin");
Console.WriteLine("사용자 데이터 삭제 성공");
isLogin = false;
// return true;
string[] keys = { "UsDt", "IsLogin", "UsAcDt" };
foreach (var key in keys)
{
var remove = await _storageService.RemoveItemAsync(key);
Console.WriteLine("사용자 데이터 삭제" + (remove ? "성공 :" : "실패 :") + key);
}
ClearStateData();
}
catch (Exception ex)
{
Console.WriteLine($"사용자 데이터 삭제 중 오류: {ex.Message}");
// return false;
}
}
private void ClearStateData()
{
isLogin = false;
UserData = new UserData();
academyItems = Array.Empty<Models.SimpleAcademy>();
}
public async Task<(bool success, UserData? userData)> GetUserDataFromServerAsync()
{
var data = await _APIService.GetConnectServerAsnyc<UserData>("/api/v1/in/user");
@ -125,33 +133,4 @@ public class UserStateService(StorageService _storageService, SecureService _sec
await _storageService.SetItemAsync("UsAcDt", data.json);
return (data.success, data.data);
}
//
// var headerValue = await _storageService.GetItemAsync("Web-AM-Connect-Key");
// if (string.IsNullOrEmpty(headerValue)) return (false, null);
//
// var args = new {
// url = "/api/v1/in/user/academy",
// method = "GET",
// headerKey = "Web-AM-Connect-Key",
// headerValue = headerValue,
// token = "VO00"
// };
//
// var response = await _js.InvokeAsync<JsonElement>(
// "fetchWithHeaderAndReturnUrl",
// args
// );
//
// Console.WriteLine($"JSON 응답: {response.ToString()}");
//
// if (response.TryGetProperty("data", out var dataElement))
// {
// try
// {
// // 전체 데이터 암호화 저장
// var userDataJson = dataElement.ToString();
// var userData = JsonSerializer.Deserialize<UserData>(userDataJson,
// new JsonSerializerOptions { PropertyNameCaseInsensitive = true });
// }
// }
}
}

View File

@ -16,9 +16,6 @@ public partial class AcademyIntro : ComponentBase, IDisposable
private bool _isProcessing = false;
protected override async void OnInitialized()
{
try

View File

@ -1,5 +1,5 @@
<div class="flex items-center justify-between whitespace-nowrap border-b border-solid border-b-[#f0f2f5] h-[72px] bg-white">
<div id="AcademyDrop" class="relative flex items-center gap-4 text-[#111418] ml-4">
<div class="flex items-center justify-between whitespace-nowrap border-b border-solid border-b-[#f0f2f5] h-[72px] w-full bg-white">
<div id="AcademyDrop" class="relative flex items-center gap-4 text-[#111418] flex-1">
<button class="flex items-center gap-2 hover:text-blue-600" @onclick="ToggleAcademyDropdown">
<h2 class="hidden md:block text-text-title text-lg font-bold leading-tight tracking-[-0.015em]">AcaMate</h2>
<svg class="w-4 h-4 transition-transform duration-200 @(isAcademyDropdownOpen ? "rotate-180" : "")"

View File

@ -47,7 +47,7 @@ public partial class TopProjectNav : ComponentBase
public async Task OnClickLogout()
{
await UserStateService.ClearUserData();
await UserStateService.ClearUserStateAsnyc();
//
// if (await UserViewModel.ClearUserData())
// {

View File

@ -15,5 +15,6 @@
@using Front.Program.Views.Project.ConnectUser
@using Front.Program.Views.Academy
@using Front.Program.Views.Academy.Common