hi
Please run this command in your solution folder.
hi
In the production environment, you need to use a production signing certificate. ABP Framework sets up signing and encryption certificates in your application and expects an openiddict.pfx file in your application.
This certificate is already generated by ABP CLI, so most of the time you don't need to generate it yourself. However, if you need to generate a certificate, you can use the following command:
dotnet dev-certs https -v -ep openiddict.pfx -p 00000000-0000-0000-0000-000000000000
00000000-0000-0000-0000-000000000000is the password of the certificate, you can change it to any password you want.
It is recommended to use two RSA certificates, distinct from the certificate(s) used for HTTPS: one for encryption, one for signing.
For more information, please refer to: https://documentation.openiddict.com/configuration/encryption-and-signing-credentials.html#registering-a-certificate-recommended-for-production-ready-scenarios
Also, see the Configuring OpenIddict documentation for more information.
hi
The AbpExtensibleDataGrid support the ExtraProperties, see https://docs.abp.io/en/abp/latest/Object-Extensions
Can you share all your custom code?
hi
I think these codes will work.
@if (context.User?.Identity?.IsAuthenticated != true)
{
<RedirectToLogin/>
}
else
{
<ErrorView
Title="@UiLocalizer["403Message"]"
HttpStatusCode="403"
Message="@UiLocalizer["403MessageDetail"]"/>
}
Thanks, I will fix this.
Your question credits have been refunded.
hi
I think this problem has been solve on 8.x.
Can you test an 8.x template project?
You can download the Account Pro module source to override in your 7.3.3
hi
You can use a third library to add Report Viewer to your Blazer project.
abp does not have a built-in Report Viewer component
hi
One way is a good approach. You can use GUID? UserId in your module.
hi
You can add this class to your Domain layer. The key code is auditLog.EntityChanges.RemoveAll(x => x.PropertyChanges.Count == 0);
using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.Extensions.Options;
using Volo.Abp.Auditing;
using Volo.Abp.AuditLogging;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Uow;
namespace MyCompanyName.MyProjectName;
[Dependency(ReplaceServices = true)]
[ExposeServices(typeof(AuditingStore), typeof(IAuditingStore))]
public class MyAuditingStore : AuditingStore
{
public MyAuditingStore(
IAuditLogRepository auditLogRepository,
IUnitOfWorkManager unitOfWorkManager,
IOptions<AbpAuditingOptions> options,
IAuditLogInfoToAuditLogConverter converter) : base(auditLogRepository, unitOfWorkManager, options, converter)
{
}
protected async override Task SaveLogAsync(AuditLogInfo auditInfo)
{
using (var uow = UnitOfWorkManager.Begin(true))
{
var auditLog = await Converter.ConvertAsync(auditInfo);
auditLog.EntityChanges.RemoveAll(x => x.PropertyChanges.Count == 0);
await AuditLogRepository.InsertAsync(auditLog);
await uow.CompleteAsync();
}
}
}