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
Markdown supported.Copy, paste, or drag & drop images and files (max 100 MB per file, 100 MB total per post) -
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)Markdown supported.Copy, paste, or drag & drop images and files (max 100 MB per file, 100 MB total per post) -
0
hi
Can you try to inject the
ISettingEncryptionServiceandEncryptyour default value?I tested it with
IStringEncryptionServicedirectly and it worked!The
ISettingEncryptionServiceEncryptmethod needs aSettingDefinitiontype parameter but doesn't really use it. Maybe this was unintentional.Thank you!
Markdown supported.Copy, paste, or drag & drop images and files (max 100 MB per file, 100 MB total per post)