2012-03-17 97 views
2

如何檢查登錄是成功還是失敗? 這裏是我的代碼:檢查通過C#登錄網站是否成功

const string baseurl = "http://maplestory.nexon.net/Default.aspx?PART=/Main"; 
    CookieContainer cookie; 
    public Login(string user, string password) 
    { 

     HttpWebRequest req = (HttpWebRequest)WebRequest.Create(baseurl); 
     req.Method = "POST"; 
     req.ContentType = "application/x-www-form-urlencoded"; 
     string login = string.Format("userID={0}&password={1}&device_id={2}", user, password, "24275770-88e0-4e"); 
     byte[] postbuf = Encoding.ASCII.GetBytes(login); 
     req.ContentLength = postbuf.Length; 
     Stream rs = req.GetRequestStream(); 
     rs.Write(postbuf, 0, postbuf.Length); 
     rs.Close(); 
     cookie = req.CookieContainer = new CookieContainer(); 

     WebResponse resp = req.GetResponse(); 
     resp.Close(); 

    } 


} 

我不知道我是否真的中記錄並順便說一下有什麼不對當前的代碼? 非常感謝。

回答

1

在您的登錄邏輯中,您通常會在響應中發回一個cookie,並使用某種令牌來檢查每個後續請求。

因此,在你的代碼,你需要創建一個身份驗證cookie並把它添加到你的迴應:

resp.Cookies.Add(new Cookie("authCookie", "myToken")); 

看看在ASP.NET如何Forms Authentication的作品,用一個MembershipProvider來處理你一起認證。我不是MembershipProvider的忠實擁躉,但它確實提供了許多基本的身份驗證接線,而且沒有太多努力(尤其是如果您對默認的會員提供的ADSQL提供商很酷)。

希望這會有所幫助!

更新如果我想檢查一個用戶是否已經登錄,我需要檢查他們的Cookies集合,看他們是否有一個有效的身份驗證令牌/ cookie。如果你使用表單身份驗證,這是爲你完成的。如果您沒有有效的cookie,您將被重定向回登錄頁面。

+0

非常感謝你的回答,我會回來一段時間,但我看到你說的關於ASP.NET和SQL等,或許你誤會了我,我想通過程序登錄一個網站我正在嘗試創建。 – idish 2012-03-17 19:48:47

+0

好吧,通常在ASP.NET應用程序中,當您登錄到網站時,您會從服務器獲取一個cookie,並隨每個請求一起發送。因此,在上面的代碼中,您需要檢查該Cookie是否存在。但是,不僅有一種方法可以做到這一點 - 有幾種方法。表單身份驗證從.net開始就已經存在,並且成員資格提供者會爲您提供一些結構來驗證身份驗證並讓用戶登錄。 – 2012-03-17 19:53:33