2

Silverlightサイトを既存のアプリケーションに統合する作業を行っており、ログイン機能を機能させようとしています。Silverlightアプリケーションには独自のログインページが必要であり、ログインには既存のASP.NETフォーム認証を利用する必要があります。ログイン手順の一部として、いくつかの外部コードを呼び出しているため、System.Web.ApplicationServices.AuthenticationServiceが公開するスクリプト可能なメソッドを使用することはできません。これを行うためにFormsAuthentication.Authenticateを使用しようとしましたが、機能しませんでした。誰かがこれを回避する方法について何かアイデアがありますか?

4

2 に答える 2

2

フォーム認証サポートを実装できるラッパーwebseviceを作成する必要があるように聞こえます。

これは私が行ったことです。たとえば、Silverlightクライアントによって参照される次のインターフェイスを使用してWCFサービスを作成しました。

[ServiceContract]
    public interface IAuthenticationService
    {
        [OperationContract()]
        string Login(string username, string password, bool isPersistent);
        [OperationContract()]
        bool Logout();
        [OperationContract()]
        string IsLoggedIn();     
    }

次に、私の実装では、カスタムコードを呼び出したり、フォーム認証APIを使用したりできます。たとえば、ログインするには次のようにします。

try
            {
                //Call you external code here
                //Then use the membership provider to authenticate
                if (Membership.ValidateUser(username, password))
                {

                    FormsAuthentication.SetAuthCookie(username, isPersistent);

                }
            }
            catch (Exception ex)
            {
                Logging.LogException("Error in Login", ex);
            }

また、サービス実装にクラス定義の上に次の属性を含める必要はありません。これにより、asp.net compatが有効になり、HttpContextにアクセスできるようになります。

 [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
于 2009-07-07T08:32:02.477 に答える
0

解決策は簡単です。カスタムコードを呼び出すカスタムメンバーシッププロバイダーを作成するだけです。詳細については、MSDNライブラリのこの記事を参照してください。ASP.NET Webサイトには、 15秒で利用できる完全なサンプルとウォークスルービデオもあります。最後に、 Microsoftが組み込みのメンバーシッププロバイダーのソースをリリースしたようです

于 2009-07-07T14:05:04.247 に答える