我们正在将 WCF Ria 服务与 silverlight 5 项目结合使用。对于身份验证,我们使用自定义成员资格提供程序。RIA 服务类库中的 WCF Ria 服务。 客户端身份验证正在运行。我们使用 WebContext.Current.User.Name 访问当前用户名。但是服务器端 ServiceContext.User 为空。如果我们使用 [RequireAuthentication] attr。在 DomainServices 中返回始终拒绝访问。 我们如何将 WebContext.Current.user 推送到 ServiceContext.user。我阅读了几个文档和教程,但每个测试都失败。
代码示例:
CustomMembershipProvider.cs:
public class CustomMembershipProvider : MembershipProvider {
public override bool ValidateUser(string username, string password)
{
using (var context = new TimEntities())
{
var user = context.User.FirstOrDefault(u => u.Username == username &&
u.Password == password);
return user != null;
}
}
}
身份验证域服务:
[EnableClientAccess]
public class AuthenticationDomainService : AuthenticationBase<AuthUser>
{}
public class AuthUser : UserBase
{}
App.Xaml.Cs:
var webContext = new WebContext();
var formsAuth = new FormsAuthentication();
var authContext = new AuthenticationDomainContext();
formsAuth.DomainContext = authContext;
webContext.Authentication = formsAuth;
ApplicationLifetimeObjects.Add(webContext);
最佳答案
我也遇到了同样的问题,不过终于找到答案了。我一直在尝试公开 SOAP 端点,这样我就可以从手机应用程序访问相同的 RIA 服务。作为其中的一部分,我在 App 构造函数中添加了以下行:
WebRequest.RegisterPrefix("http://", WebRequestCreator.ClientHttp);
去掉它,您应该可以再次使用该用户名。 SOAP 端点似乎仍然暴露给手机应用程序。
关于forms-authentication - WCF RIA 服务表单例份验证 ServiceContext.User.Identity.Name 空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12671740/