2016-11-07 16 views
0

ASPでログインページを設定しようとしていますが、正しいユーザー名とパスワードを入力しても、成功していません。もう一度お試しください。私は間違って何をしていますか?ここ正しいユーザー名とパスワードを入力したときにASPログインが機能しない

コードは次のとおり

ASPX:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="LogIn.aspx.cs" Inherits="MembershipSite.LogIn" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml" > 
<head runat="server"> 
    <title></title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 
     <h2>LogIn Page</h2> 
     <asp:Label ID="Label1" runat="server" Text="Please log in below to access the membership area."></asp:Label> 
     <br /> 
     <br /> 
     <asp:Login ID="LoginControl" runat="server" 
      onauthenticate="LoginControl_Authenticate"> 
     </asp:Login> 
    </div> 
    </form> 
</body> 
</html> 

aspx.cs:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 

using System.Web.Security; 
using System.Data.SqlClient; 
using HashLibrary; 
using System.Configuration; 
using System.Text.RegularExpressions; 


namespace MembershipSite 
{ 
    public partial class LogIn : System.Web.UI.Page 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 

     } 

     protected void LoginControl_Authenticate(object sender, AuthenticateEventArgs e) 
     { 
      bool authenticated = this.ValidateCredentials(LoginControl.UserName, LoginControl.Password); 

      if (authenticated) 
      { 
       FormsAuthentication.RedirectFromLoginPage(LoginControl.UserName, LoginControl.RememberMeSet); 
      } 
     } 




     public bool IsAlphaNumeric(string text) 
     { 
      return Regex.IsMatch(text, "^[a-zA-Z0-9]+$"); 
     } 

     private bool ValidateCredentials(string userName, string password) 
     { 
      bool returnValue = false; 

      if (this.IsAlphaNumeric(userName) && userName.Length <= 50 && password.Length <= 50) 
      { 
       SqlConnection conn = null; 

       try 
       { 
        string sql = "select count(*) from UsersMemb where username = @username and password = @password"; 

        conn = new SqlConnection(ConfigurationManager.ConnectionStrings["MembershipSiteConStr"].ConnectionString); 
        SqlCommand cmd = new SqlCommand(sql, conn); 

        SqlParameter user = new SqlParameter(); 
        user.ParameterName = "@username"; 
        user.Value = userName.Trim(); 
        cmd.Parameters.Add(user); 

        SqlParameter pass = new SqlParameter(); 
        pass.ParameterName = "@password"; 
        pass.Value = Hasher.HashString(password.Trim()); 
        cmd.Parameters.Add(pass); 

        conn.Open(); 

        int count = (int)cmd.ExecuteScalar(); 

        if (count > 0) returnValue = true; 
       } 
       catch (Exception ex) 
       { 
        // Log your error 
       } 
       finally 
       { 
        if (conn != null) conn.Close(); 
       } 
      } 
      else 
      { 
       // Log error - user name not alpha-numeric or 
       // username or password exceed the length limit! 
      } 

      return returnValue; 
     } 

    } 
} 

のWeb.config:

<?xml version="1.0" encoding="utf-8"?> 
<!-- 
    For more information on how to configure your ASP.NET application, please visit 
    http://go.microsoft.com/fwlink/?LinkId=169433 
    --> 
<configuration> 


    <appSettings> 
    <add key="ValidationSettings:UnobtrusiveValidationMode" value="None" /> 
    </appSettings> 

    <system.web> 
    <compilation debug="true" targetFramework="4.6.1"/> 
    <httpRuntime targetFramework="4.6.1"/> 

    <authentication mode="Forms"> 
     <forms defaultUrl="~/members/member.aspx" loginUrl="~/login.aspx" slidingExpiration="true" timeout="20"></forms> 
    </authentication> 

    </system.web> 


    <system.codedom> 
    <compilers> 
     <compiler language="c#;cs;csharp" extension=".cs" 
     type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" 
     warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701"/> 
     <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" 
     type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" 
     warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+"/> 
    </compilers> 
    </system.codedom> 


    <connectionStrings> 
    <add name="MembershipSiteConStr" connectionString="Data Source=TIMLAWLOR-HP\SQLEXPRESS; database=DmiVideoApp; Persist Security Info=True; integrated security=SSPI" providerName="System.Data.SqlClient" /> 
    </connectionStrings> 


</configuration> 
+0

はあなたが 'ExecuteScalar'メソッドから返された回数を確認しなかった、コードをデバッグし、すべての例外が存在する場合と存在しない場合は見ましたか?ユーザー名とパスワードを調べて、SQLに対して照会を実行して、それが動作するかどうかを確認することもできます –

答えて

0

別のアプローチは、をFormsAuthenticationを使用しています。 SetAuthCookieメソッドユーザーを指定されたページに手動でリダイレクトします。例えば

FormsAuthentication.SetAuthCookie(txtUserName.Text, false); 

    Response.Redirect('WebForm1.aspx'); 
関連する問題