Silverlight 5 プロジェクトで WCF Ria サービスを使用しています。認証には、カスタム メンバーシップ プロバイダーを使用しています。RIA サービス クラス ライブラリの WCF Ria サービス。クライアント側の認証が実行されています。WebContext.Current.User.Name で現在のユーザー名にアクセスします。ただし、サーバー側の ServiceContext.User は空です。[RequireAuthentication] 属性を使用する場合。DomainServices では常に Access Denied を返します。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;
}
}
}
AuthenticationDomainService:
[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);