Hi,
We are using .netcore 3.1 and angular project.
In Abpauditlogs table the userId is always null inserted
not capturing userid in auditlogs table.
Please help us in this.
Thanks
7 Answer(s)
-
0
hi
Can you share some auditlogs records? How can we reproduce your problem?
-
0
Hi,
We are using oracle database (Devart)
Thanks
-
0
You can try replace the built-in AuditingHelper to debug and check why UserId is null.
public override void PreInitialize() { Configuration.ReplaceService(); } public class MyAuditingHelper : IAuditingHelper, ITransientDependency { public ILogger Logger { get; set; } public IAbpSession AbpSession { get; set; } public IAuditingStore AuditingStore { get; set; } private readonly IAuditInfoProvider _auditInfoProvider; private readonly IAuditingConfiguration _configuration; private readonly IUnitOfWorkManager _unitOfWorkManager; private readonly IAuditSerializer _auditSerializer; public MyAuditingHelper( IAuditInfoProvider auditInfoProvider, IAuditingConfiguration configuration, IUnitOfWorkManager unitOfWorkManager, IAuditSerializer auditSerializer) { _auditInfoProvider = auditInfoProvider; _configuration = configuration; _unitOfWorkManager = unitOfWorkManager; _auditSerializer = auditSerializer; AbpSession = NullAbpSession.Instance; Logger = NullLogger.Instance; AuditingStore = SimpleLogAuditingStore.Instance; } public bool ShouldSaveAudit(MethodInfo methodInfo, bool defaultValue = false) { if (!_configuration.IsEnabled) { return false; } if (!_configuration.IsEnabledForAnonymousUsers && (AbpSession?.UserId == null)) { return false; } if (methodInfo == null) { return false; } if (!methodInfo.IsPublic) { return false; } if (methodInfo.IsDefined(typeof(AuditedAttribute), true)) { return true; } if (methodInfo.IsDefined(typeof(DisableAuditingAttribute), true)) { return false; } var classType = methodInfo.DeclaringType; if (classType != null) { if (classType.GetTypeInfo().IsDefined(typeof(AuditedAttribute), true)) { return true; } if (classType.GetTypeInfo().IsDefined(typeof(DisableAuditingAttribute), true)) { return false; } if (_configuration.Selectors.Any(selector => selector.Predicate(classType))) { return true; } } return defaultValue; } public AuditInfo CreateAuditInfo(Type type, MethodInfo method, object[] arguments) { return CreateAuditInfo(type, method, CreateArgumentsDictionary(method, arguments)); } public AuditInfo CreateAuditInfo(Type type, MethodInfo method, IDictionary arguments) { var auditInfo = new AuditInfo { TenantId = AbpSession.TenantId, UserId = AbpSession.UserId, ImpersonatorUserId = AbpSession.ImpersonatorUserId, ImpersonatorTenantId = AbpSession.ImpersonatorTenantId, ServiceName = type != null ? type.FullName : "", MethodName = method.Name, Parameters = ConvertArgumentsToJson(arguments), ExecutionTime = Clock.Now }; try { _auditInfoProvider.Fill(auditInfo); } catch (Exception ex) { Logger.Warn(ex.ToString(), ex); } return auditInfo; } public void Save(AuditInfo auditInfo) { using (var uow = _unitOfWorkManager.Begin(TransactionScopeOption.Suppress)) { AuditingStore.Save(auditInfo); uow.Complete(); } } public async Task SaveAsync(AuditInfo auditInfo) { using (var uow = _unitOfWorkManager.Begin(TransactionScopeOption.Suppress)) { await AuditingStore.SaveAsync(auditInfo); await uow.CompleteAsync(); } } private string ConvertArgumentsToJson(IDictionary arguments) { try { if (arguments.IsNullOrEmpty()) { return "{}"; } var dictionary = new Dictionary(); foreach (var argument in arguments) { if (argument.Value != null && _configuration.IgnoredTypes.Any(t => t.IsInstanceOfType(argument.Value))) { dictionary[argument.Key] = null; } else { dictionary[argument.Key] = argument.Value; } } return _auditSerializer.Serialize(dictionary); } catch (Exception ex) { Logger.Warn(ex.ToString(), ex); return "{}"; } } private static Dictionary CreateArgumentsDictionary(MethodInfo method, object[] arguments) { var parameters = method.GetParameters(); var dictionary = new Dictionary(); for (var i = 0; i < parameters.Length; i++) { dictionary[parameters[i].Name] = arguments[i]; } return dictionary; } }
-
0
Hi,
We have implemented this service in our project.
Output result is
Methode name : Authenticate
Tenant Id : 1
userID : null -
0
You can try methods that require user authentication.
-
0
after implementation of this service,
and authenticate the valid user at that time we got null userid..
(tokenauth/authente)how can we solve this
-
0
hi @velu
Can you share your project or a simple project that reproduces the problem?