2016-05-14 169 views
0

我有模型命名用戶在ASP.NET MVC 5.我有Encrypt()和Decrypt()擴展方法分別加密和解密字符串。我想在從數據庫中讀取數據的同時加密和解密數據。所以,我用:我如何加密和解密模型在asp.net mvc 5

private string _mob; 
public string mob 
    { 
     get 
     { 
      return _mob.Decrypt(); 
     } 
     set 
     { 
      _mob = value.Encrypt(); 
     } 
    } 

但我無法實現我的目標。當我使用

public string mob 
    { 
     get 
     { 
      return _mob; 
     } 
     set 
     { 
      _mob = value.Encrypt(); 
     } 
    } 

我完成了加密,但只要在get {}中添加Decrypt(),就不會執行加密/解密操作。我在數據庫中看到純文本數據。

回答

2

當將數據存儲在數據庫中時,EF將使用屬性存取器而不是後備字段,因此如果要存儲加密值,則需要從getter返回加密值。

由於您可能需要一個返回解密值的屬性,所以您可能需要單獨的解映射文本的未映射屬性。您可以使用[NotMapped]屬性,使EF不會嘗試將其保存到數據庫以及::

public string mob {get; set; } 

[NotMapped] 
public string mobDecrypted 
{ 
    get 
    { 
     return mob.Decrypt(); 
    } 
    set 
    { 
     mob = value.Encrypt(); 
    } 
} 
+0

先生能否請你解釋一下?我很樂意向您學習。 –

+0

詳細說明什麼? EF將使用屬性獲取器,因此如果您的獲取器返回未加密的文本,那麼這就是存儲在數據庫中的內容。 –

+0

它工作完美..非常感謝..請編輯,所以我可以upvote ..我不小心downvoted它:) –