首页 > 解决方案 > Asp.net Core IDataProtectionProvider 对于不同的应用程序是不同的?

问题描述

我正在开发一个应用程序,它由一些核心组件组成,例如 Core、Infrastructure、MVC 和 Console Application。我的应用程序核心库中有以下类

public class CustomIDataProtection
    {
        private readonly IDataProtector _protector;

        public CustomIDataProtection(IDataProtectionProvider protectionProvider)
        {
            _protector = protectionProvider.CreateProtector("test123");
        }

        public string Encode(object currentObject)
        {
            var serilazedObject = JsonConvert.SerializeObject(currentObject);
           
            var protectedData = _protector.Protect(serilazedObject);
           
            return protectedData;
        }
        public string Decode(string data)
        {
            try
            {
              
                var unprotectedData = _protector.Unprotect(data);
                var desearlizedObj = JsonConvert.DeserializeObject<string>(unprotectedData);
                return desearlizedObj;
            }
            catch (Exception ex)
            {

                throw ex;
            }
            
        }

我将上述类注入控制台应用程序并编码一些这样的数据

注册服务

var serviceCollection = new ServiceCollection();
 serviceCollection.AddSingleton<CustomIDataProtection>();

注射服务

private readonly CustomIDataProtection _protector;
 _protector = scope.ServiceProvider.GetService<CustomIDataProtection>();

编码数据:

var value = "test";
var password = _protector.Encode(value);

现在编码后我将它保存在数据库中。之后,我切换到我的 MVC 应用程序并尝试通过控制台应用程序解码该编码数据,但我的解码代码失败。给我错误

有效载荷无效

我想知道为什么它给我一个错误?当我在控制台应用程序中编码并在同一个应用程序中解码时,它工作正常。但是当我在控制台应用程序中编码并尝试在 MVC 应用程序中解码时,它给了我一个错误。

标签: c#asp.net-mvcasp.net-coreasp.net-core-mvc

解决方案


推荐阅读