Activities of "fjinc"

Yes I think so more or less, but I would suggest this fix could improve + reduce issues like this in the future.

A fix on your side could be regenerating the hash that is to be stored in the cache at the end of the method from the textsInDatabase to ensure it captures any existing texts records stored in the db.

Thanks Maliming. I see the issue I had when I QA'ed this which is why I thought they didn't get deleted. I think it might be something wrong with the way the hash of the text records caching is created.

My steps were:

  1. Run a version of our application where we add a new localization resource with text records
  2. Run our application with changes to the text records localization resource.
  3. Run our application with the new ExternalLocalizationSaver code in it.

When I run step 2, there are changes to the localization resource so the hashes of the db versus the .json file are different so it doesn't exit early from the UpdateResourceTextChangesAsync method. However, because I'm using an older version of the ExternalLocalizationSaver, the localizations in the db field do not get deleted. The hash for the resource gets updated into the cache, using the hash calculated from the localizedStrings - the raw .json text records. When I run step 3 with the new ExternalLocalizationSaver, it exits early because the hashes are the same. This means it doesn't delete the old text records from the db field.

I've fixed this by clearing the cache between steps 2 and 3 which ensures it does not return early from the UpdateResourceTextChangesAsync method.

A fix on your side could be regenerating the hash that is to be stored in the cache at the end of the method from the textsInDatabase to ensure it captures any existing texts records stored in the db.

Thanks Maliming. I can see this implements the option to delete old resources however the deleted text records in a resource dont get removed from the db still. Is this something that is being added? Thanks.

Hi We're trying to hide certain localisations from the users in the frontend and ran into a problem and the eventual cause seems to be the ExternalLocalizationStore service not deleting old localisations from the ExternalLocalizationStore table. We found this out after we deployed a fix to our staging environment that removed a localization key value - however this did not get propagated to the database or the api/abp/application-localization api, meaning we could see the value we wanted to removed in the response.
I have solved this by disabling the ExternalStore feature and deleting the values from the AbpLocalizationTexts database table however this isn't ideal as it means we no longer have the ability to edit the localizations using the Language Management UI (since our localisations are distributed across different webhosts). There is a similar problem with the AbpLocalizationResources table where the resource does not get removed if you delete it from the application altogether.

Steps:

  • Create a localization resource in your application with some en.json
  • Run the host and ensure AbpExternalLocalizationOptions.SaveToExternalStore is set to true in the host configuration.
  • Observe the resource and the values from your en.json gets added to the AbpLocalizationTexts table
  • Remove several keys from the en.json file
  • Rerun the host (ensure db is kept online to simulate prod/stg environment).
  • Observe the entry in AbpLocalizationTexts table still shows the keys you have just deleted.
  • This can also be checked by looking at the LanguageManagement UI and seeing the value there still. I have cleared redis to ensure I'm not seeing old cached values and I can see they get repopulated upon page refresh so it isn't this.

If this is the intended behaviour and just requires manual patching each time we make changes to the .json files it is disappointing as it adds additional overhead to deployments. Is there a fix for this that deletes older keys from the db to ensure only the latest is shown to the users? We are using ABP commercial 7.3.3. Thank you ! :)

hi fjinc

You can use IIdentitySessionRepository to remove all user sessions.

https://github.com/abpframework/abp/blob/dev/modules/identity/src/Volo.Abp.Identity.EntityFrameworkCore/Volo/Abp/Identity/EntityFrameworkCore/EfCoreIdentitySessionRepository.cs#L90-L94

Thanks maliming. I'm more suggesting a new ABP feature by adding to the existing setting management for Session management I'm aware we can make extensions to add this behaviour ourselves but it seems that it would be a useful feature to have for other people too.

i.e. on this session setting page, as the host tenant admin user, I can enable settings to apply for all users of all tenancies

hi fjinc

across all tenants and their users from the Host tenant?

By default, users will not be across tenants. Can you explain it in detail?

Hi maliming, What I mean is, as the Host tenant, I want to enforce all users across the application to use a specific session setting (eg 'Logout from all devices') so that I can force all the users of my application to have better security practices

At the moment, I can only enforce this for the users of my tenancy which means to enforce for users in another tenant I have to impersonate the tenant admin and set the setting. It would be useful if we can do this all from our Host tenant admin account.

Hi We've recently upgraded our ABP version to v8.2 and we're excited to try the new Session management - particularly being able to enforce all user's of the application to have only one user on one device at any time.

Our application is a tenanted one, I wonder if it would be possible to add to the Session setting page the ability to enforce the same session management across all tenants and their users from the Host tenant?

Great thank you, please let me know what version the fix will be included in.

Hi,

Yes, that's is. I will create an internal issue to fix it; thanks.

Hi liangshiwei, Has there been any update on this / eta for when it will be fixed?

I've just tested this and I'm still reproducing the error. Is your console clearing itself on being redirected? (cog -> preserve logs)

Showing 1 to 10 of 11 entries
Boost Your Development
ABP Live Training
Packages
See Trainings
Mastering ABP Framework Book
The Official Guide
Mastering
ABP Framework
Learn More
Mastering ABP Framework Book
Made with ❤️ on ABP v10.0.0-preview. Updated on September 18, 2025, 07:10