ASP.NET Core Data Protection 不僅提供了非對稱式加密能力,而且提供了靈活的秘鑰儲存方式以及一致的加解密介面(Protect與Unprotect)。Session中用到了它,Cookie驗證中用到了它,OpenIdConnect中也用到了它。。。當然你也可以在應用開發中使用它,比如這篇博文中就是用它產生啟用帳戶的驗證token。
首先在 Startup.ConfigureServices() 中註冊 DataProtection 服務(注入 IDataProtectionProvider 介面的實現):
public void ConfigureServices(IServiceCollection services){ services.AddDataProtection();}
然後在使用 DataProtection 的類的建構函式中添加 IDataProtectionProvider 介面,並用該介面建立 DataProtector ,接著以此建立 SecureDataFormat ,最後用 SecureDataFormat.Protect() 方法產生啟用帳戶的 token ,用 SecureDataFormat.Uprotect() 解密 token,完整的範例程式碼如下:
public class HomeController : Controller{ private readonly ISecureDataFormat<string> _dataFormat; public HomeController(IDataProtectionProvider _dataProtectionProvider) { var dataProtector = _dataProtectionProvider.CreateProtector(typeof(HomeController).FullName); _dataFormat = new SecureDataFormat<string>(new StringSerializer(), dataProtector); } public string GenerateToken() { return _dataFormat.Protect(Guid.NewGuid().ToString() + ";" + DateTime.Now.AddHours(10)); } public string DecryptToken(string token) { return _dataFormat.Unprotect(token); } private class StringSerializer : IDataSerializer<string> { public string Deserialize(byte[] data) { return Encoding.UTF8.GetString(data); } public byte[] Serialize(string model) { return Encoding.UTF8.GetBytes(model); } }}
以上就是本文的全部內容,希望對大家的學習有所協助,也希望大家多多支援topic.alibabacloud.com。