我已经实现了RIA WCF端以使用Forms身份验证进行身份验证,并且所有内容都可以按照预期在客户端上运行。
此应用程序应仅允许注册用户使用它(用户是由管理员创建的 - 没有注册页面。)
我的问题是,什么(或在哪里)应该是进行身份验证的有效方法;它必须在应用程序启动时显示(除非记住我已启用并且cookie仍然处于活动状态)并且如果用户注销,它应该自动退出界面并再次返回登录表单。
更新(为简洁起见,代码已修整):
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 :(得分:2)
我看到你的其他问题,所以我假设你正在使用mvvm。我通过创建一个带有网格控件和导航框架的RootPage来实现这一目标。我将RootVisual设置为RootPage。我将导航帧源绑定到RootPageVM中的变量,然后在RootPageVM的consructor中,您可以根据用户身份验证将帧源设置为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";
}
}
导航方法:
private void Navigate(NotificationMessage obj)
{
FrameSource = obj.Notification;
}
在LoginViewModel中:
if (loginOperation.LoginSuccess)
{
Messenger.Default.Send
(new NotificationMessage(this, "Home"), "NavigationRequest");
}