Silverlight和RIA服务:持续登录会话

时间:2011-01-21 15:05:19

标签: silverlight wcf-ria-services autologin

我目前正在尝试使用RIA服务的Silverlight。我正在实现一个简单的登录表单。我还使用提供的身份验证域服务模板生成以下文件:

[EnableClientAccess]
public class AuthenticationDomainService : AuthenticationBase<User>
{
    // To enable Forms/Windows Authentication for the Web Application, 
    // edit the appropriate section of web.config file.
}

public class User : UserBase
{
    // NOTE: Profile properties can be added here 
    // To enable profiles, edit the appropriate section of web.config file.

    // public string MyProfileProperty { get; set; }
    public int DefaultRows { get; set; }
}

现在我可以在我的应用程序中无问题地登录/注销。在Silverlight应用程序中,登录后,行:

WebContext.Current.User.IsAuthenticated;

返回true。

但是,我需要在会话中保持这种状态(即当我使用F5重新加载页面时)。

目前,当页面重新加载时,我必须重新登录。

这是我的登录代码:

WebContext.Current.Authentication.Login(new LoginParameters(this.UserName, this.Password, true, string.Empty),
                    (LoginOperation loginOperation) =>
                    {
                        if (loginOperation.LoginSuccess)
                        {
                            NotificationMessage Message = new NotificationMessage(this, null, "CLOSE");
                            Messenger.Default.Send<NotificationMessage>(Message);
                        }
                    }, null);

Login方法的第三个参数是IsPersistent参数。从MSDN Docs,我认为当设置为true时,下次加载页面时,用户仍然会登录。但是,情况并非如此。

我是否需要阅读已在内部设置的cookie,然后使用该cookie提供的用户名/密码在后台登录?或者还有其他一些神奇的工作吗?

我希望不知何故已经这样做了。

提前致谢

1 个答案:

答案 0 :(得分:4)

在浏览Silverlight业务应用程序模板后,我找到了这行代码:

WebContext.Current.Authentication.LoadUser(this.Application_UserLoaded, null);

调用它的好地方是App.xaml.cs中的Application's Startup事件。这将从服务器加载经过身份验证的用户。

如果有人碰巧遇到同样的问题,我想我会发布这个。