2012-04-21 56 views
1

嘗試將服務引用添加到我的Windows 8應用程序。但asmx文件位於具有特定角色的登錄用戶可以查看的文件夾內。就像一個受保護的文件夾,我也爲網站使用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 2012-04-21 17:34:56

+0

只要您將對所有調用使用SAME代理實例,代理將保留所有的cookie,包括包含會話ID的cookie。 – 2012-04-21 17:44:01

+0

太棒了,謝謝。 – user1027620 2012-04-21 19:23:40

相關問題