Activities of "maliming"

hi

You can write detailed http request header info in the log.


[Dependency(ReplaceServices = true)]
[ExposeServices(typeof(AccountAppService), typeof(IAccountAppService))]
public class MyAccountAppService : AccountAppService
{
    public MyAccountAppService(IdentityUserManager userManager,
        IAccountEmailer accountEmailer,
        IAccountPhoneService phoneService,
        IIdentityRoleRepository roleRepository,
        IdentitySecurityLogManager identitySecurityLogManager,
        IBlobContainer<AccountProfilePictureContainer> accountProfilePictureContainer,
        ISettingManager settingManager,
        IOptions<IdentityOptions> identityOptions,
        IIdentitySecurityLogRepository securityLogRepository) :
        base(userManager, accountEmailer, phoneService, roleRepository, identitySecurityLogManager,
        accountProfilePictureContainer, settingManager, identityOptions, securityLogRepository)
    {
    }

    public async override Task ConfirmEmailAsync(ConfirmEmailInput input)
    {
        var httpContext = LazyServiceProvider.LazyGetRequiredService<IHttpContextAccessor>();
        if (httpContext.HttpContext == null)
        {
            var obj = new
            {
                RemoteIpAddress = httpContext.HttpContext.Connection.RemoteIpAddress?.ToString(),
                Headers = httpContext.HttpContext.Request.Headers
                    .Select(header => header.Key + " : " + header.Value)
                    .ToList()
            };

            var logger = LazyServiceProvider.LazyGetRequiredService<ILogger<MyAccountAppService>>();
            logger.LogError(JsonSerializer.Serialize(obj));
        }

        await base.ConfirmEmailAsync(input);
    }
}

Here is a temporary solution:

[Dependency(ReplaceServices = true)]
[ExposeServices(typeof(AccountAppService), typeof(IAccountAppService))]
public class MyAccountAppService : AccountAppService
{
    public MyAccountAppService(IdentityUserManager userManager,
        IAccountEmailer accountEmailer,
        IAccountPhoneService phoneService,
        IIdentityRoleRepository roleRepository,
        IdentitySecurityLogManager identitySecurityLogManager,
        IBlobContainer<AccountProfilePictureContainer> accountProfilePictureContainer,
        ISettingManager settingManager,
        IOptions<IdentityOptions> identityOptions,
        IIdentitySecurityLogRepository securityLogRepository) :
        base(userManager, accountEmailer, phoneService, roleRepository, identitySecurityLogManager,
        accountProfilePictureContainer, settingManager, identityOptions, securityLogRepository)
    {
    }

    public async override Task ConfirmEmailAsync(ConfirmEmailInput input)
    {
        var user = await UserManager.GetByIdAsync(input.UserId);

        if (user.EmailConfirmed)
        {
            return;
        }

        await base.ConfirmEmailAsync(input);
    }
}

hi

Yes, this URL can only be requested once.

Will it be requested by components like Azure or Firewall? You can write detailed http request header info in the log.

hi balessi75

When we click the confirmation link, however, we still receive the 'Invalid Token' error.

Is the email of the user confirmed?

Can you share the full logs of this test process ?

liming.ma@volosoft.com

hi

Does this answer can solve your problem?

https://support.abp.io/QA/Questions/4871/The-ABP-microservice-project-menu-permission-cannot-be-obtained#answer-3a0a8c28-f2e1-8a09-44f0-dc97396223e9

hi

You can put them on the Domain layer. : )

Answer

hi

We have a sample for Excel.

https://github.com/abpframework/abp-samples/pull/64

There is no sample for pdf.

Answer

hi

You can try to use MailKit.

https://docs.abp.io/en/abp/latest/Emailing https://docs.abp.io/en/abp/latest/MailKit

We also have a demo to test it.

https://github.com/abpframework/abp-samples/tree/master/EmailSendDemo

I would like to ask though; why that code for the CheckExpiresAt() not in the core ABP? Is there any other side effect?

We will do that. https://github.com/abpframework/abp/pull/16504

Also should I use the same code for the API HOST project?

No. This only needs for the web project.

Thanks. I will check it asap.

Do you have any steps to supplement?

why the user still ends up having their email flagged as confirmed even though they get the invalid token message?

This means that the URL has been accessed many times. The first time it succeeds, the token will be invalid after that.

Showing 6181 to 6190 of 10655 entries
Learn More, Pay Less
33% OFF
All Trainings!
Get Your Deal
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 12, 2025, 10:20