2012-02-17 66 views
0

我試圖運行一個簡單的密碼驗證程序。我已經在JSP中編寫了它,並且它可以工作。我是C#和ASP.NET的初學者,希望通過在C#中編寫它來練習/學習。作爲初學者,我遇到了一些問題,希望得到一些幫助。將Java服務器頁面翻譯爲C#

我原本工作得很好。這是一種解決方法,這是一種不好的做法 - 但對學習Java和JSP非常有用。它只是使用POP服務器作爲用戶身份驗證的解決方法 - 很愚蠢,但很好學習!

我現在所擁有的是我認爲應該工作的這個類,它存儲在我的表單用作「動作」的.aspx文件中。

class POPServer 
{ 
    static Boolean hasLogin(string username, string password) 
    { 
     const bool isValid; 
     using (var client = new TcpClient("host.hosty.com", 110)) 
     using (var stream = client.GetStream()) 
     using (var reader = new StreamReader(stream)) 
     using (var writer = new StreamWriter(stream)) 
     { 
      writer.WriteLine("USER " + username); 
      writer.WriteLine("PASS " + password); 
      const string response = reader.ReadLine(); 
      isValid = response[ 0 ] == '+'; 
      writer.WriteLine("quit\n"); 
     } 
     return isValid; 
    } 
} 

於是我連接到主機存儲的用戶名和密碼,驗證對這種形式:

<form action="POPServer.aspx" method="post"> 
    <fieldset> 
    <legend>Login Form</legend> 
    <label for="teachername">Username: 
     <input type="text" name="teachername" id="teachername" value="" /> 
    </label> 
    <label for="teacherpass">Password: 
     <input type="password" name="teacherpass" id="teacherpass" value="" /> 
    </label> 
    <label for="teacherremember"> 
     <input class="checkbox" type="checkbox" name="teacherremember" id="teacherremember" checked="checked" /> 
     Remember me</label> 
    <p> 
     <input type="submit" name="teacherlogin" id="teacherlogin" value="Login" /> 
     &nbsp; 
     <input type="reset" name="teacherreset" id="teacherreset" value="Reset" /> 
    </p> 
    </fieldset> 
</form> 

我想知道的是:

是對我的代碼正確的「形式」 - 將C#存儲在ASPX文件中並在用戶嘗試登錄時根據需要運行它是否正確?我無法找到有關這方面的消息,我假設我需要一個像JSP這樣的結構:你可以運行:

if (request.hasParameter("Submit")) 
{ 
    if (POPServer.hasLogin(request.getParameter("username"), request.getParameter("username"))) { 
     response.location("loginPage.aspx"); 
    } 
} 

你如何存儲會話數據,以便用戶通過身份驗證後,「登錄頁」是顯示和用戶永久登錄,而不是隻是帶來了一個鏈接,然後被遺忘?

+0

WebForms或MVC? – Prescott 2012-02-17 15:36:52

+0

我現在正在使用WebMatrix的網頁! – 2012-02-17 15:38:56

回答

1

編碼ASP.NET有兩種不同的方法,Web FormsMVC。使用ASP.NET Web Forms(您正在使用的),您可以在.aspx中執行代碼,但是,通常將代碼放置在爲所用語言命名的代碼隱藏中,即.aspx.cs或.aspx的.vb。

代碼隱藏包含與頁面關聯的類。此類包含與頁面加載,按鈕點擊等相對應的事件。ASP.NET支持使用asp:前綴(即<asp:Label runat="server" ID="MyLabel" Text="My label text"/>)指定的多個內置控件。然後標籤和其他元素可以通過它們在代碼隱藏中的ID引用,即MyLabel.Text = "My different label text";

ASP.NET支持一個名爲Session的集合,您可以在其中存儲在用戶會話期間持續存在的信息。

我應該指出,雖然ASP.NET有一個基於提供程序和安全模型的安全模型,它集成在安全行爲中,比你在這裏採用的方法提供了更多的安全行爲控制。您應該在MSDN上看到Walkthrough: Creating an ASP.NET Web Site with Basic User Login

我也強烈建議如果您還沒有Visual Studio。有完整產品的時間限制試用版。還有一些版本較小的免費版本,這些版本的版本號爲Express

祝你好運,我希望你喜歡學習這個。