티스토리 뷰

반응형

로그인 페이지를 이용해서 로그인하고 메인 페이지로 넘어가는 방법을 심플 프레임워크에 적용했습니다.

문의 주신 멀루님 감사합니다. 오픈 일정이 있어서 너무 늦게 봤습니다.

 

자세한 설명은 생략하고 핵심 내용만 살펴 보도록 하겠습니다.

1. AppContext.cs

애플리케이션 전체에서 사용하는 데이터들을 모아 놓는 곳이라고 보시면 됩니다.

여기에 로그인 사용자 정보를 넣어두고 관리합니다.

/// <summary>
/// 애플리케이션 전체에서 유지되어야하는 데이터 - 싱글톤으로 유지
/// </summary>
public class AppContext : IAppContext
{
    /// <summary>
    /// 로그인 유저 아이디
    /// </summary>
    public string Id { get; set; }
    /// <summary>
    /// 로그인 유저 이름
    /// </summary>
    public string Name { get; set; }
    /// <summary>
    /// 접속시간
    /// </summary>
    public DateTime Connection { get; set; }
    /// <summary>
    /// 접속아이디
    /// </summary>
    public Guid ConnectionId { get; set; } = Guid.NewGuid();
}

2. 싱글톤 등록

private static IServiceProvider ConfigureServices() 메서드 내부에 싱글톤으로 하나를 등록합니다.

//AppContext 싱글톤 등록
_ = services.AddSingleton<IAppContext, Models.AppContext>();

3. 로그인 완료시

로그인이 완료되면, singletonAppContext에 id와 name을 입력하고, HomePage로 네비게이션 시켜 줍니다.

private void OnLogin()
{
    if(string.IsNullOrEmpty(AppContext.Id) || string.IsNullOrEmpty(AppContext.Name))
    {
        ShowWarning("Id와 Name은 필수값 입니다.");
        return;
    }
    //로그인 성공으로 판단

    //아이디와 이름을 싱글톤appcontext에 입력
    var singletonAppContext = App.Current.Services.GetService<IAppContext>();
    singletonAppContext.Id = AppContext.Id;
    singletonAppContext.Name = AppContext.Name;
    //네비게이션
    WeakReferenceMessenger.Default.Send(new NavigationMessage("Views/HomePage.xaml"));
}

4. HomePageViewModel

초기화를 할때 싱글톤 인스턴스를 가져와서 AppContext 프로퍼티에 주입합니다.

private void Init()
{
    BusyTestCommand = new AsyncRelayCommand(OnBusyTestAsync);
    LayerPopupTestCommand = new RelayCommand(OnLayerPopupTest);
    Price = 12345678;

    AppContext = App.Current.Services.GetService<IAppContext>();
}

5. 실행 결과

로그인 화면

로그인 완료 후 홈화면

6. 소스

WpfFramework/ at part10/add-loginpage · kaki104/WpfFramework · GitHub

 

반응형

'WPF .NET' 카테고리의 다른 글

Kiosk 만들기 - Part1  (0) 2023.10.16
Kiosk 만들기 - Part0  (0) 2023.10.13
Url 유효성 체크  (0) 2023.05.22
Visual Studio에서 다중 레파지토리 사용하기  (0) 2023.05.10
이미지 사용하기 - WPF Pack URI Part2  (0) 2023.04.12
댓글