基于ASP.NET Core數(shù)據(jù)保護生成驗證token示例
ASP.NET Core Data Protection 不僅提供了非對稱加密能力,而且提供了靈活的秘鑰存儲方式以及一致的加解密接口(Protect與Unprotect)。Session中用到了它,Cookie驗證中用到了它,OpenIdConnect中也用到了它。。。當然你也可以在應用開發(fā)中使用它,比如這篇博文中就是用它生成激活帳戶的驗證token。
首先在 Startup.ConfigureServices() 中注冊 DataProtection 服務(注入 IDataProtectionProvider 接口的實現(xiàn)):
public void ConfigureServices(IServiceCollection services) { services.AddDataProtection(); }
然后在使用 DataProtection 的類的構造函數(shù)中添加 IDataProtectionProvider 接口,并用該接口創(chuàng)建 DataProtector ,接著以此創(chuàng)建 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); } } }
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
asp.net XMLHttpRequest實現(xiàn)用戶注冊前的驗證
用戶注冊前的驗證,提高用戶體驗。2009-10-10用C#中的params關鍵字實現(xiàn)方法形參個數(shù)可變
個人認為,提供params關鍵字以實現(xiàn)方法形參個數(shù)可變是C#語法的一大優(yōu)點。在方法形參列表中,數(shù)組類型的參數(shù)前加params關鍵字,通常可以在調(diào)用方法時代碼更加精練2012-01-01ASP.NET 5中使用AzureAD實現(xiàn)單點登錄
本文給大家介紹的是在ASP.NET 5中使用AzureAD實現(xiàn)單點登錄的方法和示例,有需要的小伙伴可以參考下。2015-07-07DataSet.Tables[].Rows[][]的用法詳細解析
以下是對DataSet.Tables[].Rows[][]的用法進行了詳細的分析介紹,需要的朋友可以過來參考下2013-09-09asp.net中使用cookie與md5加密實現(xiàn)記住密碼功能的實現(xiàn)代碼
雖然.net內(nèi)置了登陸控件,有記住密碼的功能,但還是想自己實踐一下,以下代碼主要應用了COOKIE,包括安全加密的過程等2013-02-02