Silverlight 4.0 仅接受注册用户的Silverlight RIA应用程序
我已经实现了RIA WCF端,以使用表单身份验证进行身份验证,并且一切都按照预期从客户端开始工作 此应用程序应仅允许注册用户使用它(用户由管理员创建-无注册页面) 我的问题是,什么(或在哪里)应该是进行身份验证的有效方法;它必须在应用程序启动时显示(除非RememberMe已打开且cookie仍处于活动状态),如果用户注销,它应自动退出界面并再次返回登录表单 更新(为简洁起见,对代码进行了裁剪):Silverlight 4.0 仅接受注册用户的Silverlight RIA应用程序,silverlight-4.0,ria,wcf-ria-services,Silverlight 4.0,Ria,Wcf Ria Services,我已经实现了RIA WCF端,以使用表单身份验证进行身份验证,并且一切都按照预期从客户端开始工作 此应用程序应仅允许注册用户使用它(用户由管理员创建-无注册页面) 我的问题是,什么(或在哪里)应该是进行身份验证的有效方法;它必须在应用程序启动时显示(除非RememberMe已打开且cookie仍处于活动状态),如果用户注销,它应自动退出界面并再次返回登录表单 更新(为简洁起见,对代码进行了裁剪): 我看到你问了另外一个问题,所以我假设你正在使用mvvm。我通过创建一个带有网格控件和导航框架的根页
我看到你问了另外一个问题,所以我假设你正在使用mvvm。我通过创建一个带有网格控件和导航框架的根页面来实现这一点。我将RootVisual设置为RootPage。我将导航框架源绑定到RootPageVM中的一个变量,然后在RootPageVM的构造函数中,您可以根据用户身份将框架源设置为MainPage或LoginPage。RootPageVM还可以接收消息来控制进一步的导航,如注销 使用MVVM灯 因此,在RootPageView(设置为RootVisual)中,类似于:
public RootPageViewModel()
{
Messenger.Default.Register<NotificationMessage>
(this, "NavigationRequest", Navigate);
if (IsInDesignMode)
{
}
else
{
FrameSource =
WebContext.Current.User.IsAuthenticated ?
"Home" :
"Login";
}
}
在LoginView模型中:
if (loginOperation.LoginSuccess)
{
Messenger.Default.Send
(new NotificationMessage(this, "Home"), "NavigationRequest");
}
IDK,我应该在何处以及如何为
AuthenticationService
的事件创建处理程序,以及如何在UI中管理它;当用户未经身份验证时,我需要立即将其赶走。该程序仅用于服务注册用户,未经授权。用户应该会看到错误/死区屏幕。我在LoginViewModel中有逻辑,如果用户进行身份验证,我会发送一条消息,该消息将在RootPageViewModel中接收,告诉它导航到主页。您可以在他们注销时执行同样的操作,发送消息导航回登录页面。我更喜欢使用PRISM的EventAggregator,但IDK how。在NavDemo源代码中,可以添加RootView和LoginView,就像NavDemo中的MainView和子视图一样。然后将RootView设置为RootVisual。在LoginViewModel中进行身份验证,它处理登录按钮单击,对RIA进行异步调用,在回调上,如果有效,则向Root发送导航消息以切换内容。
private void Navigate(NotificationMessage obj)
{
FrameSource = obj.Notification;
}
if (loginOperation.LoginSuccess)
{
Messenger.Default.Send
(new NotificationMessage(this, "Home"), "NavigationRequest");
}