2012-04-21 23 views
1

サービス参照をmy windows 8アプリケーションに追加しようとしています。しかし、asmxファイルは、特定のロールを持つユーザがログインできるフォルダの中にあります。保護されたフォルダのように、私はまた、Webサイトのasp.netメンバーシッププロバイダを使用しています。この参照を追加するにはどうすればいいですか?アプリケーションへのサービス参照の追加

ありがとうございました。

答えて

2

サービスユーザーを認証する簡単な方法がありますが、これにより問題が解決されるはずです。

まず、サービスをパブリックフォルダに置いてください。パブリックフォルダには、まったく権限がありません。これにより、問題なくWindows 8アプリから参照を追加することができます。

次に、あなたのサービスでは、ユーザーを認証するためのメソッドを作成します。

public bool Login(string UserName, string Pwd) 
{ 
    // validate the user and create the forms cookie upon succesfull validaition 
    if (IsValid(UserName, Pwd)) 
    { 
     FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(...); 

     string CookieName = FOrmsAuthentication.FormsCookieName; 
     string CookieValue = ticket.Encrypt(); 

     this.Response.Cookies.Add(new HttpCookie(CookieName, CookieValue)); 
    } 
} 

このパブリックメソッドは、あなたのWindows 8アプリを呼び出す必要があります最初の方法になります。

次に、あなたはPrincipalPermission属性を持つ他のすべてのサービスメソッドを保護:

[PrincipalPermission(Roles="Admin, User")] 
public TheMethodForAdminOrUser() 
{ 
    // do whatever you want 
} 
Loginメソッドへの有効な呼び出しで認証されたユーザーのみがアクセスできるようになりますように、あなたのサービスメソッドの呼び出しを守るだろう

属性あなたサービス。

+0

私はいくつかのWebメソッドでHttpContextを使用していると、現在のユーザーがログインしていることを識別するために、Windows 8アプリケーションがセッションIDや各要求を送信する必要はありません。クライアント? – user1027620

+0

すべての呼び出しにSAMEプロキシインスタンスを使用する限り、プロキシはセッションIDを含むCookieを含むすべてのCookieを保持します。 –

+0

素晴らしいです、ありがとうございます。 – user1027620

関連する問題