2016-11-28 146 views
0

我的數據庫與SqlMembershipProvider描述here建。ASP.NET成員資格和.NET核心

我使用System.Web.Security;

要檢查用戶是否存在,我使用:Membership.ValidateUser(u.UserName, u.Password);

我想移動到.net coreSystem.Web.Security;不支持 - 所以不是Membership.ValidateUser(u.UserName, u.Password);我想查詢db並檢查用戶是否存在,但db中的密碼是散列的。

如何檢查用戶是否存在? 我可以解密存儲在數據庫中的密碼嗎? 我有什麼選擇?

謝謝。

回答

0

在asp.net檢索用戶的密碼成員身份API,你可以這樣做,這樣做的:

MembershipUser user = Membership.GetUser("username"); 
string password = user.GetPassword(); 
string saferPassword = user.GetPassword("password answer"); 

後者是更安全的,因爲它需要你在用戶的安全答案傳遞作爲一個附加的檢查。這會給你未加密的密碼(默認的會員系統在數據庫中存儲散列密碼)。

爲了支持此功能,你需要在web.config中啓用密碼檢索。您可以在節點下執行此操作。它看起來像這樣:

<membership defaultProvider="myProvider"> 
     <providers> 
     <add connectionStringName="LocalSqlServer" enablePasswordRetrieval="true" 
      enablePasswordReset="true" requiresQuestionAndAnswer="true" 
      applicationName="/" requiresUniqueEmail="false" passwordFormat="Encrypted" 
      maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" 
      minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" 
      passwordStrengthRegularExpression="" name="myProvider" 
      type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> 

    </providers> 

</membership> 

希望可以幫助你。

編碼快樂

+0

的NuGet沒有找到任何包System.Web.Security.SqlMembershipProvider或System.Web.Security。 –