1
嘗試將服務引用添加到我的Windows 8應用程序。但asmx文件位於具有特定角色的登錄用戶可以查看的文件夾內。就像一個受保護的文件夾,我也爲網站使用asp.net會員提供商。我如何添加此參考或驗證它?將服務引用添加到應用程序
謝謝。
嘗試將服務引用添加到我的Windows 8應用程序。但asmx文件位於具有特定角色的登錄用戶可以查看的文件夾內。就像一個受保護的文件夾,我也爲網站使用asp.net會員提供商。我如何添加此參考或驗證它?將服務引用添加到應用程序
謝謝。
有一個更簡單的方法來授權您的服務用戶,這應該可以解決您的一些問題。
首先,將您的服務置於公用文件夾中,根本沒有授權。這將允許您從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
方法的有效調用身份驗證的用戶將能夠訪問你的服務。
這將工作,但如果我在我的一些Web方法中使用HttpContext,是不是Windows 8應用程序需要發送會話ID或每個請求上的東西,以確定當前用戶登錄客戶端? – user1027620 2012-04-21 17:34:56
只要您將對所有調用使用SAME代理實例,代理將保留所有的cookie,包括包含會話ID的cookie。 – 2012-04-21 17:44:01
太棒了,謝謝。 – user1027620 2012-04-21 19:23:40