asp.net 폼 인증을 사용하고 있으며 사용자의 비밀번호를 재설정 할 수 있어야합니다. web.config를 설정하고 ASP.NET ResetPassword() 메서드를 사용하는 방법
이
코드입니다 :protected void resetPassword(string username)
{
MembershipUser user = Membership.GetUser(username);
if (user != null)
{
string newPassword = user.ResetPassword();
Membership.UpdateUser(user);
MailMessage message = new MailMessage("", user.Email, "change password", "your Password changed to: " + newPassword);
userManager.sendMail(message);
}
}
그리고 여기 내 web.config 파일입니다 :
<?xml version="1.0"?>
<configuration>
<appSettings>
<add key="ChartImageHandler" value="storage=file;timeout=20;dir=c:\TempImageFiles\;" />
</appSettings>
<system.webServer>
<handlers>
<remove name="ChartImageHandler" />
<add name="ChartImageHandler" preCondition="integratedMode" verb="GET,HEAD,POST"
path="ChartImg.axd" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</handlers>
</system.webServer>
<connectionStrings>
<add name="CRM_DBConnectionString" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=C:\CRM\CRM\DAL_new\CRM_DB.mdf;Integrated Security=True;User Instance=True" providerName="System.Data.SqlClient"/>
<add name="CRM_DBConnectionString2" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=C:\CRM\DAL_new\CRM_DB.mdf;Integrated Security=True;User Instance=True" providerName="System.Data.SqlClient"/>
</connectionStrings>
<system.web>
<httpHandlers>
<add path="ChartImg.axd" verb="GET,HEAD,POST" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
validate="false" />
</httpHandlers>
<pages>
<controls>
<add tagPrefix="asp" namespace="System.Web.UI.DataVisualization.Charting"
assembly="System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</controls>
</pages>
<roleManager enabled="true"/>
<authentication mode="Forms">
<forms loginUrl="./login_page/Default.aspx" name=".ASPXFORMSAUTH" protection="All" timeout="43200" requireSSL="false" slidingExpiration="true" cookieless="UseCookies" enableCrossAppRedirects="false" />
</authentication>
<compilation debug="true" targetFramework="4.0">
<assemblies>
<add assembly="System.Web.Extensions.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add assembly="System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
<add assembly="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
</assemblies>
</compilation>
</system.web>
<system.net>
<mailSettings>
<smtp from="[email protected]">
<network host="smtp.gmail.com" password="########" port="587" userName="######@gmail.com"/>
</smtp>
</mailSettings>
</system.net>
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_IBlServer" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536" messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered" useDefaultWebProxy="true">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384"/>
<security mode="None">
<transport clientCredentialType="None" proxyCredentialType="None" realm=""/>
<message clientCredentialType="UserName" algorithmSuite="Default"/>
</security>
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://localhost:51109/Service1.svc" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IBlServer" contract="CrmServiceReference.IBlServer" name="BasicHttpBinding_IBlServer"/>
</client>
</system.serviceModel>
</configuration>
라인 : 나는했습니다
System.ArgumentNullException was unhandled by user code
Message=Value cannot be null.
Parameter name: passwordAnswer
: string newPassword = user.ResetPassword();
는 예외를 throw 비슷한 질문을 여러 곳에서 받았지만 다른 사이트에서는 볼 수 없었습니다. 매개 변수를 가져와야하는 ResetPassword()
에 대한 오류로 끝나거나 다른 조작을 위해 사용자 계정을 검색하는 페이지에서 다른 코드를 위로 가져옵니다.
해결책 here 내 코드에 다른 MembershipUser user = Membership.GetUser(username);
행이 있습니다.
어디 방법에 내가 다음 원하는 경우 난 내 Web.config의를 구성 : 보안 Q & (이 이미 작동)
2. 관리자 사용하여 자신을 위해 자신의 비밀번호를 재설정 할 수 있습니다
1. 사용자 사용자의 비밀번호를 재설정 할 수 있습니다. 사용자는 새 암호로 전자 메일을 받게됩니다. 사전에
감사합니다,
'알고리즘을 사용하여 암호화'절대 해보지 마십시오. 기본 제공 암호화 서비스 –
'을 사용하면 두 개의 멤버 자격 공급자를 만들 수도 있습니다.하지만 첫 번째 멤버는 없습니다. 나는 그것을 필요로 하느냐? 멤버 공급자를 추가해도 해당 코드의 'MembershipUser user = membership.GetUser (username);'에 영향을 미치지 않을까요? – summerbulb
@summerbulb 멤버십 섹션을 정의해야합니다. 그렇지 않으면 'user'변수가 항상 null이됩니다. 그렇지 않으면 GetUser가 이전에 예외를 throw합니다. 짧게 이야기하면 web.config의 멤버십 섹션없이 코드가 작동하지 않습니다. –