2012-01-02 2 views
1

여기 asp.net에서 기본 응용 프로그램을 만들 때 실제로 작성한 로그인 페이지가 있는데 실제로 코드의 유효성을 검사하는 곳을 이해하려고합니다./사용자 ID와 암호를 인증?, 나는 이것을 제외하고 코드 숨김 코드를 찾지 못했습니다 : 어디에서 사용자 이름과 암호의 유효성을 검사합니까? asp.net 회원 가입 api - 로그인 제어 (여기서 코드가 실행됩니까?)

은 내가

protected void Page_Load(object sender, EventArgs e) 
     { 
      RegisterHyperLink.NavigateUrl = "Register.aspx?ReturnUrl=" + HttpUtility.UrlEncode(Request.QueryString["ReturnUrl"]); 
     } 
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent"> 
    <h2> 
     Log In 
    </h2> 
    <p> 
     Please enter your username and password. 
     <asp:HyperLink ID="RegisterHyperLink" runat="server" EnableViewState="false">Register</asp:HyperLink> if you don't have an account. 
    </p> 
    <asp:Login ID="LoginUser" runat="server" EnableViewState="false" RenderOuterTable="false"> 
     <LayoutTemplate> 
      <span class="failureNotification"> 
       <asp:Literal ID="FailureText" runat="server"></asp:Literal> 
      </span> 
      <asp:ValidationSummary ID="LoginUserValidationSummary" runat="server" CssClass="failureNotification" 
       ValidationGroup="LoginUserValidationGroup"/> 
      <div class="accountInfo"> 
       <fieldset class="login"> 
        <legend>Account Information</legend> 
        <p> 
         <asp:Label ID="UserNameLabel" runat="server" AssociatedControlID="UserName">Username:</asp:Label> 
         <asp:TextBox ID="UserName" runat="server" CssClass="textEntry"></asp:TextBox> 
         <asp:RequiredFieldValidator ID="UserNameRequired" runat="server" ControlToValidate="UserName" 
          CssClass="failureNotification" ErrorMessage="User Name is required." ToolTip="User Name is required." 
          ValidationGroup="LoginUserValidationGroup">*</asp:RequiredFieldValidator> 
        </p> 
        <p> 
         <asp:Label ID="PasswordLabel" runat="server" AssociatedControlID="Password">Password:</asp:Label> 
         <asp:TextBox ID="Password" runat="server" CssClass="passwordEntry" TextMode="Password"></asp:TextBox> 
         <asp:RequiredFieldValidator ID="PasswordRequired" runat="server" ControlToValidate="Password" 
          CssClass="failureNotification" ErrorMessage="Password is required." ToolTip="Password is required." 
          ValidationGroup="LoginUserValidationGroup">*</asp:RequiredFieldValidator> 
        </p> 
        <p> 
         <asp:CheckBox ID="RememberMe" runat="server"/> 
         <asp:Label ID="RememberMeLabel" runat="server" AssociatedControlID="RememberMe" CssClass="inline">Keep me logged in</asp:Label> 
        </p> 
       </fieldset> 
       <p class="submitButton"> 
        <asp:Button ID="LoginButton" runat="server" CommandName="Login" Text="Log In" ValidationGroup="LoginUserValidationGroup"/> 
       </p> 
      </div> 
     </LayoutTemplate> 
    </asp:Login> 
</asp:Content> 

답변

2

구현 도구는 Login.OnBubbleEvent 메서드입니다. 자세한 내용은 http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.login.onbubbleevent.aspx

+0

고마워,하지만 어떻게 전달되고 디버그합니까? –

+0

[Fiddler] (http://www.fiddler2.com/fiddler2/)와 같은 일부 타사 도구를 사용하여 통신을 캡처 할 수 있습니다. 반면에 .net 프레임 워크 소스 코드에서 디버깅을 시도 할 수 있습니다. http://blogs.msdn.com/b/sburke/archive/2008/01/16/configuring-visual-studio-to-debug-net-framework-source-code.aspx –

+0

와우의 메소드를 참조하십시오. 그래서 만약에; 사용자가 인증되기 전/후에 로직을 추가해야합니까? –

-1

당신이 파일 뒤에 코드에서 봤어 .... CommandName="Login" 볼 수 있지만 코드를 찾을 해달라고? 이것은 login.aspx.cs와 같습니다.

+0

난 단지 내 질문에 게시 된 뒤에있는 코드에서'Page_Load'가 ... –

0

을 참조하십시오. 에드워드 주 (Edward Zhu)가 정답이라고 지적한대로. 여기 일이

파블

0

검색을 "로그인"에

protected override bool OnBubbleEvent(object source, EventArgs e) 
{ 
    bool flag = false; 
    if (e is CommandEventArgs) 
    { 
     CommandEventArgs args = (CommandEventArgs) e; 
     if (string.Equals(args.CommandName, LoginButtonCommandName, StringComparison.OrdinalIgnoreCase)) 
     { 
      this.AttemptLogin(); 
      flag = true; 
     } 
    } 
    return flag; 
} 

LoginButtonCommandName 기본값을 (Reflector.exe 사용) 이벤트를 System.Web.dll에서 코드 조각이 무엇인지에 대한 이해를 증진하려면 상속 클래스에 대한 코드 :는 MembershipProvider

나는이 클래스를 가지고

public class TsMembershiProvider : MembershipProvider 
{ 
    private Dictionary<string, MembershipUser> _Users; 

    // MembershipProvider Properties 
    public override string ApplicationName 
    { 
     get { throw new NotSupportedException(); } 
     set { throw new NotSupportedException(); } 
    } 

    public override bool EnablePasswordRetrieval 
    { 
     get { return true; } 
    } 

    public override bool EnablePasswordReset 
    { 
     get { return true; } 
    } 

    public override int MaxInvalidPasswordAttempts 
    { 
     get { throw new NotSupportedException(); } 
    } 

    public override int MinRequiredNonAlphanumericCharacters 
    { 
     get { return 2; } 
    } 

    public override int MinRequiredPasswordLength 
    { 
     get { return 5; } 
    } 

    public override int PasswordAttemptWindow 
    { 
     get { throw new NotSupportedException(); } 
    } 

    public override MembershipPasswordFormat PasswordFormat 
    { 
     get { throw new NotSupportedException(); } 
    } 

    public override string PasswordStrengthRegularExpression 
    { 
     get { throw new NotSupportedException(); } 
    } 

    public override bool RequiresQuestionAndAnswer 
    { 
     get { return false; } 
    } 

    public override bool RequiresUniqueEmail 
    { 
     get { throw new NotSupportedException(); } 
    } 

    // MembershipProvider Methods 
    public override void Initialize(string name, NameValueCollection config) 
    { 
     // Verify that config isn't null 
     if (config == null) 
      throw new ArgumentNullException("config"); 

     // Assign the provider a default name if it doesn't have one 
     if (String.IsNullOrEmpty(name)) 
      name = "TsMembershipProvider"; 

     // Add a default "description" attribute to config if the 
     // attribute doesn't exist or is empty 
     if (string.IsNullOrEmpty(config["description"])) 
     { 

      config.Add("description", "Membership provider"); 
     } 

     // Call the base class's Initialize method 
     base.Initialize(name, config); 

     // Throw an exception if unrecognized attributes remain 
     if (config.Count > 0) 
     { 
      string attr = config.GetKey(0); 
      if (!String.IsNullOrEmpty(attr)) 
       throw new ProviderException 
        ("Unrecognized attribute: " + attr); 
     } 
    } 

    public override bool ValidateUser(string username, string password) 
    { 
     if (String.IsNullOrEmpty(username) || String.IsNullOrEmpty(password)) 
      return false; 

     SqlDataReader dr = SqlHelper.ExecuteReader(SqlHelper.ConnString, "spc_UserAuthorization", username, password); 

     bool ret = dr.HasRows; 

     return ret; 
    } 

    public override MembershipUser GetUser(string username, bool userIsOnline) 
    { 
     // Note: This implementation ignores userIsOnline 

     // Validate input parameters 
     if (String.IsNullOrEmpty(username)) 
      return null; 

     // Retrieve the user from the database 

     MembershipUser user = MU(username, userIsOnline); //userIsOnline = AltEmail - gets alternative email (hvb) 
     return user; 
    } 

    public override MembershipUserCollection GetAllUsers(int pageIndex, 
     int pageSize, out int totalRecords) 
    { 
     // Note: This implementation ignores pageIndex and pageSize, 
     // and it doesn't sort the MembershipUser objects returned 

     // Make sure the data source has been loaded 
     ReadMembershipDataStore(); 

     MembershipUserCollection users = 
      new MembershipUserCollection(); 

     foreach (KeyValuePair<string, MembershipUser> pair in _Users) 
      users.Add(pair.Value); 

     totalRecords = users.Count; 
     return users; 
    } 

    public override int GetNumberOfUsersOnline() 
    { 
     throw new NotSupportedException(); 
    } 

    public override bool ChangePassword(string username, string oldPassword, string newPassword) 
    { 
     MembershipUser u = Membership.GetUser(username); 
     if (u == null || oldPassword != u.GetPassword()) 
     { 
      return false; 
     } 

     if (newPassword.Length < MinRequiredPasswordLength) 
     { 
      return false; 
     } 

     CharEnumerator chars = newPassword.GetEnumerator(); 
     int nr = 0; 
     while (chars.MoveNext()) 
     { 
      if (!Char.IsLetterOrDigit(chars.Current)) 
       nr++; 
     } 

     if (MinRequiredNonAlphanumericCharacters < nr) 
     { 
      return false; 
     } 

     // CALL TO SQL TO CHANGE PASSWORD 
     return true; 
    } 

    public override bool 
     ChangePasswordQuestionAndAnswer(string username, 
     string password, string newPasswordQuestion, 
     string newPasswordAnswer) 
    { 
     throw new NotSupportedException(); 
    } 

    public override MembershipUser CreateUser(string username, 
     string password, string email, string passwordQuestion, 
     string passwordAnswer, bool isApproved, object providerUserKey, 
     out MembershipCreateStatus status) 
    { 
     //SOME CODE i DON'T WHANT YOU TO SEE :) 
     string strStatus = ""; 
     string strUserid = ""; 

     status = (MembershipCreateStatus)Enum.Parse(typeof(MembershipCreateStatus), strStatus, true); 

     if (status == MembershipCreateStatus.Success) 
     { 
      int userid = 0; 
      try 
      { 
       userid = Convert.ToInt32(strUserid); 
      } 
      catch 
      { 
       status = MembershipCreateStatus.ProviderError; 
      } 

      MembershipUser mu = MU(username); 
      return mu; 
     } 
     else 
     { 
      return null; 
     } 
    } 

    public override bool DeleteUser(string username, 
     bool deleteAllRelatedData) 
    { 
     throw new NotSupportedException(); 
    } 

    public override MembershipUserCollection 
     FindUsersByEmail(string emailToMatch, int pageIndex, 
     int pageSize, out int totalRecords) 
    { 
     throw new NotSupportedException(); 
    } 

    public override MembershipUserCollection 
     FindUsersByName(string usernameToMatch, int pageIndex, 
     int pageSize, out int totalRecords) 
    { 
     throw new NotSupportedException(); 
    } 

    public override string GetPassword(string username, string answer) 
    { 
     //GET PASS FROM SQL 
     return ""; 
    } 

    public override MembershipUser GetUser(object providerUserKey, bool userIsOnline) 
    { 
     string UserName = (string)SqlHelper.ExecuteScalar(SqlHelper.ConnString, CommandType.Text, "select .... WHERE UserID = " + providerUserKey.ToString()); 
     MembershipUser m = MU(UserName, userIsOnline); 
     return m; 
    } 

    public override string ResetPassword(string username, 
     string answer) 
    { 
     throw new NotSupportedException(); 
    } 

    public override bool UnlockUser(string userName) 
    { 
     throw new NotSupportedException(); 
    } 

    public override void UpdateUser(MembershipUser user) 
    { 
     throw new NotSupportedException(); 
    } 

    // Helper method 
    private void ReadMembershipDataStore() 
    { 
     lock (this) 
     { 
     } 
    } 

    private MembershipUser MU(string UserName) 
    { 
     return MU(UserName, false); 
    } 

    private MembershipUser MU(string UserName, bool isOnline) 
    { 
     MembershipUser user = null; 

     //SOME CODE 

     return user; 
    } 
}