2011-03-13 3 views
1

Forms 인증을 사용하여 인증하기 위해 RIA WCF 측을 구현했으며 예상대로 모든 것이 클라이언트에서 작동합니다.Silverlight RIA 등록 된 사용자 만 허용하는 응용 프로그램

이 응용 프로그램은 등록 된 사용자 만이 사용하도록 허용해야합니다 (사용자는 등록 페이지가 없음).

그럼 내 질문에 따라 인증을 효율적으로 수행하는 방법이 무엇일까? (사용자가 기억해두고 쿠키가 여전히 활성화되어 있지 않으면) 응용 프로그램 시작시 표시되어야하며 사용자가 로그 아웃하면 자동으로 인터페이스를 나가서 다시 로그인 양식으로 돌아와야합니다. (코드는 간결하게 정돈)

업데이트 :

Public Class MainViewModel 
    .... 

    Public Property Content As Object 'DP property 

    Private Sub ValidateUser() 
     If Not IsUserValid Login() 
    End Sub 

    Private Sub Login() 
    'I want, that when the login returns a success it should continue 
    'navigating to the original content i.e. 
    Dim _content = Me.Content 
    Me.Content = Navigate(Of LoginPage) 
    If IsUserValid Then Me.Content = _content 
    End Sub 

End Class 
+0

입니까 당신은 mvvm을 사용하고 있습니까? –

답변

2

내가 당신에게 다른 질문을했다 그래서 당신이 MVVM을 사용하는 가정합니다. 그리드 컨트롤과 네비게이션 프레임이있는 RootPage를 만들어이 작업을 수행합니다. RootVisual을 RootPage로 설정했습니다. 내비게이션 프레임 소스를 RootPageVM의 변수에 바인딩 한 다음 RootPageVM의 생성자에서 사용자 인증을 기반으로 MainPage 또는 LoginPage로 프레임 소스를 설정할 수 있습니다. RootPageVM은 로그 아웃과 같은 추가 탐색을 제어하는 ​​메시지를 수신 할 수도 있습니다.

MVVM-Light 사용.

그래서, RootPageView에서합니다 (RootVisual로 설정), 같은 :

public RootPageViewModel() 
{ 
    Messenger.Default.Register<NotificationMessage> 
     (this, "NavigationRequest", Navigate); 

    if (IsInDesignMode) 
    { 
    } 
    else 
    {    
     FrameSource = 
      WebContext.Current.User.IsAuthenticated ? 
      "Home" : 
      "Login";    
    } 
} 

그리고 탐색하는 방법 다음 LoginViewModel에서

private void Navigate(NotificationMessage obj) 
{   
    FrameSource = obj.Notification; 
} 

:

if (loginOperation.LoginSuccess) 
{               
    Messenger.Default.Send 
     (new NotificationMessage(this, "Home"), "NavigationRequest");   
} 
+0

@Derek, +1, 잘 시작 했으니 까, 정교하게 말하십시오. – Shimmy

+0

IDK,'AuthenticationService' 이벤트에 대한 핸들러를 어디에서 어떻게 만들고 UI에서 관리 할 것인가? 사용자가 인증을받지 못하게되면 사용자를 즉시 ​​퇴장시켜야합니다. 이 프로그램은 등록되지 않은 사용자에게 서비스를 제공하기위한 용도로만 사용됩니다. 사용자는 오류/종료 화면을보아야합니다. – Shimmy

+2

LoginViewModel에 논리가 있습니다. 사용자가 인증하면 RootPageViewModel에서 수신되어 MainPage로 이동하라는 메시지를 보냅니다. 로그 아웃 할 때도 동일한 작업을 수행 할 수 있습니다. LoginPage로 돌아가려면 메시지를 보내십시오. –

관련 문제