ASP.NET 멤버십 보안 질문 및 사용자 정의 비밀번호 복구에 대한 답변을 사용하지 않는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/920334

문제

ASP.NET 멤버십 제공 업체가 제공하는 보안 질문 및 답변 기능을 원하지 않지만 분실/잊어 버린 비밀번호 페이지를 활성화하고 싶습니다.

이 페이지는 사용자가 이메일 주소를 입력하는 곳이며 사용자가 등록 된 이메일 주소로 전송 된 링크를 통해 비밀번호를 재설정하도록 등록 된 경우 해당 주소로 전송됩니다.

해당 요청을 추적하기위한 사용자 정의 테이블, 요청에 할당 된 임의의 키 및 요청의 만료 날짜를 추적했습니다. 그러나 실제로 비밀번호를 재설정하기 위해 코드를 작성할 때, 보안 Q & A (내가 가지고 있지 않은)를 사용할 필요없이 ResetPassword (이메일, NewPassword)와 같은 방법이없는 것 같습니다.

내장 된 멤버십 기능을 통해 간단히 사용자의 비밀번호를 재설정하는 방법이 있습니까?

그렇지 않다면 어떻게해야합니까?

도움을 주셔서 감사합니다. -니산

도움이 되었습니까?

해결책

내가 한 일은 다음과 같습니다

public string ResetPassword(string email)
        {
            var m_userName = Membership.GetUserNameByEmail(email);
            var m_user = Membership.GetUser(m_userName);
            return m_user.ResetPassword();
        }

그런 다음이 값을 사용하여 암호를 변경하는 새로운 방법을 추가했습니다.

public bool ChangeLostPassword(string email, string newPassword)
    {
        var resetPassword = ResetPassword(email);
        var currentUser = Membership.GetUser(Membership.GetUserNameByEmail(email), true);
        return currentUser.ChangePassword(resetPassword, newPassword);

    }

다른 팁

이 옵션을 web.config에서 변경하지 않는 이유는 무엇입니까?

         enablePasswordRetrieval="false"
         enablePasswordReset="true"
         requiresQuestionAndAnswer="false"

안에

<membership>
   <providers>
      <clear/>
      <add name="AspNetSqlMembershipProvider" ...
      ..........
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top