基于ASP.NET Core數(shù)據(jù)保護(hù)生成驗(yàn)證token示例
ASP.NET Core Data Protection 不僅提供了非對(duì)稱(chēng)加密能力,而且提供了靈活的秘鑰存儲(chǔ)方式以及一致的加解密接口(Protect與Unprotect)。Session中用到了它,Cookie驗(yàn)證中用到了它,OpenIdConnect中也用到了它。。。當(dāng)然你也可以在應(yīng)用開(kāi)發(fā)中使用它,比如這篇博文中就是用它生成激活帳戶(hù)的驗(yàn)證token。
首先在 Startup.ConfigureServices() 中注冊(cè) DataProtection 服務(wù)(注入 IDataProtectionProvider 接口的實(shí)現(xiàn)):
public void ConfigureServices(IServiceCollection services)
{
services.AddDataProtection();
}
然后在使用 DataProtection 的類(lèi)的構(gòu)造函數(shù)中添加 IDataProtectionProvider 接口,并用該接口創(chuàng)建 DataProtector ,接著以此創(chuàng)建 SecureDataFormat ,最后用 SecureDataFormat.Protect() 方法生成激活帳戶(hù)的 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);
}
}
}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- ASP.NET?Core使用EF創(chuàng)建模型(包含屬性、排除屬性、主鍵和生成值)
- ASP.NET Core自動(dòng)生成小寫(xiě)破折號(hào)路由的實(shí)現(xiàn)方法
- ASP.NET Core 5中如何生成PDF文檔
- Asp.Net Core使用swagger生成api文檔的完整步驟
- 詳解ASP.NET Core 2.0 路由引擎之網(wǎng)址生成(譯)
- Asp.NetCore1.1版本去掉project.json后如何打包生成跨平臺(tái)包
- Asp.net core WebApi 使用Swagger生成幫助頁(yè)實(shí)例
- asp.net core實(shí)現(xiàn)在線(xiàn)生成多個(gè)文件將多個(gè)文件打包為zip返回的操作
相關(guān)文章
ASP.NET MVC如何使用Unity實(shí)現(xiàn)Ioc詳解
這篇文章主要給大家介紹了關(guān)于ASP.NET MVC如何使用Unity實(shí)現(xiàn)Ioc的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-07-07
.NET中如何將文本文件的內(nèi)容存儲(chǔ)到DataSet
大家在項(xiàng)目中比較多的會(huì)對(duì)文件進(jìn)行操作,例如文件的上傳下載,文件的壓縮和解壓等IO操作。而在.NET項(xiàng)目中較多的會(huì)使用DataSet,DataTable進(jìn)行數(shù)據(jù)的緩存。每一個(gè)DataSet都是一個(gè)或多個(gè)DataTable對(duì)象的集合,本文主要介紹的是如何將文本文件的內(nèi)容存儲(chǔ)到DataSet里去。2016-12-12
防止.NET應(yīng)用多實(shí)例運(yùn)行的有效方法
在開(kāi)發(fā)桌面應(yīng)用程序時(shí),可能會(huì)遇到這樣一種需求:限制程序只能同時(shí)運(yùn)行一個(gè)實(shí)例,如果用戶(hù)試圖再次啟動(dòng)同一個(gè)程序,應(yīng)該將已經(jīng)運(yùn)行的程序窗口置于前臺(tái)而不是啟動(dòng)一個(gè)新實(shí)例,這篇文章提供了一種通過(guò)檢測(cè)當(dāng)前程序?qū)嵗⒓せ钜堰\(yùn)行實(shí)例的方法,需要的朋友可以參考下2024-12-12
asp.net 數(shù)據(jù)綁定的實(shí)例代碼
這篇文章介紹了asp.net 數(shù)據(jù)綁定的實(shí)例代碼,有需要的朋友可以參考一下2013-07-07
SqlDataReader生成動(dòng)態(tài)Lambda表達(dá)式
這篇文章主要介紹了SqlDataReader生成動(dòng)態(tài)Lambda表達(dá)式,需要的朋友可以參考下2017-04-04
在AspNetCore中使用極驗(yàn)做行為認(rèn)證的驗(yàn)證流程
這篇文章主要介紹了在AspNetCore中使用極驗(yàn)做行為認(rèn)證的驗(yàn)證流程 ,本文有圖文介紹有實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-09-09
使用CustomValidator自定義驗(yàn)證控件檢查是否有對(duì)ListBox控件選擇
在網(wǎng)頁(yè)前端處,我們放置ListBox控件,在數(shù)據(jù)提交前,檢查用戶(hù)是否有對(duì)此控件進(jìn)行選擇?小編將介紹使用Javascript與CustomValidator自定義驗(yàn)證控件來(lái)檢查感興趣的朋友可以了解下2013-01-01
asp.net使用npoi讀取excel模板并導(dǎo)出下載詳解
這篇文章主要介紹了asp.net使用npoi讀取excel模板并導(dǎo)出下載的示例,大家參考使用吧2014-01-01

