2012-02-17 69 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

祝你好运,我希望你喜欢学习这个。