コントローラー内で問題なくIDataProtectorを使用して保護しています。私はプロテクターを注入して使用することができます。コントローラー間でc#MVCのデータ保護で復号化を暗号化
IDataProtector _protector;
public HomeController(IDataProtectionProvider provider)
{
_protector = provider.CreateProtector(GetType().FullName);
}
public IActionResult Index()
{
Test test = new Test();
test.originaltext = "1";
test.encryptedtext = _protector.Protect(test.originaltext);
test.originaltext = _protector.Unprotect(test.encryptedtext);
return View(test);
}
これは、私は、これは暗号化されたデータを渡すリンクを作成して、同じコントローラ上の別の作用
<a asp-controller="Home"
asp-action="GetKey"
asp-route-id="@Model.encryptedtext">
Pass Key to getkey
</a>
にこれを渡すことができ、暗号化と「1」
を復号化の両方を示し私はGetKeyアクションで解読することができます。
public IActionResult GetKey(String id)
{
Test test = new Test();
test.encryptedtext = id;
test.originaltext = _protector.Unprotect(id);
return View(test);
}
私はリンクを作成して別のコントローラに渡そうとします。
<a asp-controller="Key"
asp-action="GetKeyController"
asp-route-id="@Model.encryptedtext">
Pass Key to other controller
</a>
それはエラー
System.Security.Cryptography.CryptographicException: The payload was invalid
と私は見なければならない場所に上の任意の手がかりを失敗しましたか?
は、うん、まさにそれを見つけたが、あなたの迅速な対応に感謝します。 – user3749535