Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Silverlight 4.0 仅接受注册用户的Silverlight RIA应用程序_Silverlight 4.0_Ria_Wcf Ria Services - Fatal编程技术网

Silverlight 4.0 仅接受注册用户的Silverlight RIA应用程序

Silverlight 4.0 仅接受注册用户的Silverlight RIA应用程序,silverlight-4.0,ria,wcf-ria-services,Silverlight 4.0,Ria,Wcf Ria Services,我已经实现了RIA WCF端,以使用表单身份验证进行身份验证,并且一切都按照预期从客户端开始工作 此应用程序应仅允许注册用户使用它(用户由管理员创建-无注册页面) 我的问题是,什么(或在哪里)应该是进行身份验证的有效方法;它必须在应用程序启动时显示(除非RememberMe已打开且cookie仍处于活动状态),如果用户注销,它应自动退出界面并再次返回登录表单 更新(为简洁起见,对代码进行了裁剪): 我看到你问了另外一个问题,所以我假设你正在使用mvvm。我通过创建一个带有网格控件和导航框架的根页

我已经实现了RIA WCF端,以使用表单身份验证进行身份验证,并且一切都按照预期从客户端开始工作

此应用程序应仅允许注册用户使用它(用户由管理员创建-无注册页面)

我的问题是,什么(或在哪里)应该是进行身份验证的有效方法;它必须在应用程序启动时显示(除非RememberMe已打开且cookie仍处于活动状态),如果用户注销,它应自动退出界面并再次返回登录表单

更新(为简洁起见,对代码进行了裁剪):


我看到你问了另外一个问题,所以我假设你正在使用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");        
}