我目前正在尝试使用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提供的用户名/密码在后台登录?或者还有其他一些神奇的工作吗?
我希望不知何故已经这样做了。
提前致谢
答案 0 :(得分:4)
在浏览Silverlight业务应用程序模板后,我找到了这行代码:
WebContext.Current.Authentication.LoadUser(this.Application_UserLoaded, null);
调用它的好地方是App.xaml.cs中的Application's Startup事件。这将从服务器加载经过身份验证的用户。
如果有人碰巧遇到同样的问题,我想我会发布这个。