分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 网页技术

.net core cookie登录和session的 DataProtectionProvider 加入 redis

发布时间:2023-09-06 02:26责任编辑:沈小雨关键词:redis
 ???????????????string redisConnectionString = Configuration.GetSection("Storage:Redis").GetValue<string>("ConnectionString"); ???????????????string redisInstanceName = Configuration.GetSection("Storage:Redis").GetValue<string>("InstanceName"); ???????????????services.AddDistributedRedisCache(options => ???????????????{ ???????????????????options.Configuration = redisConnectionString; ???????????????????options.InstanceName = redisInstanceName; ???????????????}); ???????????????IDataProtectionBuilder dataProtectionBuilder = services.AddDataProtection() ???????????????????.SetApplicationName("xxx") ???????????????????.UseCryptographicAlgorithms( ???????????????????????new AuthenticatedEncryptorConfiguration() ???????????????????????{ ???????????????????????????EncryptionAlgorithm = EncryptionAlgorithm.AES_256_CBC, ???????????????????????????ValidationAlgorithm = ValidationAlgorithm.HMACSHA256 ???????????????????????}) ???????????????????.PersistKeysToRedis(ConnectionMultiplexer.Connect(redisConnectionString), "DataProtection-Keys"); ???????????????services.AddSession(options => ???????????????{ ???????????????????options.IdleTimeout = TimeSpan.FromMinutes(20); //session活期时间 ???????????????????options.Cookie = new CookieBuilder() ???????????????????{ ???????????????????????Name = $".{GetType().Namespace}.Session", ???????????????????????HttpOnly = true, ???????????????????}; ???????????????}); ???????????????services.AddSingleton(HtmlEncoder.Create(UnicodeRanges.All));//中文乱码 ???????????????services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme) ???????????????.AddCookie(CookieAuthenticationDefaults.AuthenticationScheme, options => ???????????????{ ???????????????????options.DataProtectionProvider = CreateRedisDataProtectionProvider(ConnectionMultiplexer.Connect(redisConnectionString)); ???????????????????//options.DataProtectionProvider = DataProtectionProvider.Create(new DirectoryInfo(@"C:\_sso")); ???????????????????options.SlidingExpiration = true; ???????????????????options.LoginPath = "/account/signin"; ???????????????????options.Cookie = new CookieBuilder() ???????????????????{ ???????????????????????HttpOnly = true, ???????????????????????Name = $".{GetType().Namespace}", ???????????????????}; ???????????????});
 ???????IDataProtectionProvider CreateRedisDataProtectionProvider(IConnectionMultiplexer connection) ???????{ ???????????return new ServiceCollection() ???????????????.AddDataProtection() ???????????????.SetApplicationName("Survey.SSO") ???????????????.UseCryptographicAlgorithms( ???????????????????new AuthenticatedEncryptorConfiguration() ???????????????????{ ???????????????????????EncryptionAlgorithm = EncryptionAlgorithm.AES_256_CBC, ???????????????????????ValidationAlgorithm = ValidationAlgorithm.HMACSHA256 ???????????????????}) ???????????????.PersistKeysToRedis(connection, "DataProtection-SSO-Keys") ???????????????.Services ???????????????.BuildServiceProvider() ???????????????.GetRequiredService<IDataProtectionProvider>(); ???????}
 ???????????????app.UseAuthentication(); ???????????????app.UseSession();//在UseMvc前面 ???????????????app.UseMvc();

.net core cookie登录和session的 DataProtectionProvider 加入 redis

原文地址:https://www.cnblogs.com/wintersoft/p/10147054.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved