Check the docs before asking a question: https://docs.abp.io/en/commercial/latest/ Check the samples to see the basic tasks: https://docs.abp.io/en/commercial/latest/samples/index The exact solution to your question may have been answered before, and please first use the search on the homepage. Provide us with the following info:
- ABP Framework version: v7.3.3
- UI Type: Angular
- Database System: EF Core (SQL Server)
- Tiered (for MVC) or Auth Server Separated (for Angular): yes
- Exception message and full stack trace: below
- Steps to reproduce the issue: below
Hello! We are using the ABP settings provider, but we are having difficulty setting a default value for a encrypted setting. We can set the default value, but it cannot be read after. I guess it's because ABP is trying to decrypt a value that is not encrypted yet. Is there a way to set a default value to an encrypted setting?
Thanks.
4 Answer(s)
-
0
hi
We can set the default value
Please share your code. Usually, you don't need to care about the encryption, which is done automatically.
https://docs.abp.io/en/abp/latest/Settings#isettingencryptionservice
-
0
hi
We can set the default value
Please share your code.Usually, you don't need to care about the encryption, which is done automatically.
https://docs.abp.io/en/abp/latest/Settings#isettingencryptionservice
public override void Define(ISettingDefinitionContext context) { context.Add(new SettingDefinition(ProductServiceSettings.DataShareApiUrl, "http://192.168.15.3:5150", isEncrypted: false)); context.Add(new SettingDefinition(ProductServiceSettings.DataSharePublicKey, "015e5387-05d4-4904-9d1a-b7a6c4241bd6", isEncrypted: false)); context.Add(new SettingDefinition(ProductServiceSettings.DataShareSecretKey, "11ddf380-c141-4889-b5ee-dcdd72c0b8d0", isEncrypted: true)); context.Add(new SettingDefinition(ProductServiceSettings.SchedulerUsername, "scheduler_user")); context.Add(new SettingDefinition(ProductServiceSettings.SchedulerPassword, "123456", isEncrypted: true)); // and so on... }
Please note that settings that are not encrypted we can get default values using ISettingProvider normally, like this example:
var urlHeader = $"{(await settingProvider.GetOrNullAsync(ProductServiceSettings.DataShareApiUrl)).EnsureEndsWith('/')}{url}";
But encrypted ones returns null. like this one:
await settingProvider.GetOrNullAsync(ProductServiceSettings.DataShareSecretKey)
-
0
hi
Can you try to inject the
ISettingEncryptionService
andEncrypt
your default value? -
0
hi
Can you try to inject the
ISettingEncryptionService
andEncrypt
your default value?I tested it with
IStringEncryptionService
directly and it worked!The
ISettingEncryptionService
Encrypt
method needs aSettingDefinition
type parameter but doesn't really use it. Maybe this was unintentional.Thank you!