hi
We also need to override EmailConfirmationModel
I will share code soon.
Your questions credit is refunded.
Yes, I will forward it to the suite team.
Yes, We will update the document.
hi
[DependsOn(typeof(ChatBlazorModule))]
[DependsOn(typeof(ChatBlazorServerModule))]
[DependsOn(typeof(ChatSignalRModule))]
<PackageReference Include="Volo.Chat.Blazor" Version="7.2.1" />
<PackageReference Include="Volo.Chat.Blazor.Server" Version="7.2.1" />
<PackageReference Include="Volo.Chat.SignalR" Version="7.2.1" />
hi
Try the CheckTokenExpiration
extension method for your Cookies authentication.
https://github.com/abpframework/abp/pull/16504
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