相关疑难解决方法(0)

我在哪里可以获得Firebase Admin的"serviceAccountCredentials.json"?

这里说的是我需要在java上设置Firebase:

FirebaseOptions options = new FirebaseOptions.Builder()
    .setDatabaseUrl("https://databaseName.firebaseio.com")
    .setServiceAccount(new FileInputStream("path/to/serviceAccountCredentials.json"))
    .build();
FirebaseApp.initializeApp(options);
Run Code Online (Sandbox Code Playgroud)

但是我在哪里可以获得serviceAccountCredentials.json

更新: 我发现这个文件似乎应该有这个字段,但是哪里得到这个值?

{
  "type": "",
  "project_id": "",
  "private_key_id": "",
  "private_key": "",
  "client_email": "",
  "client_id": "",
  "auth_uri": "",
  "token_uri": "",
  "auth_provider_x509_cert_url": "",
  "client_x509_cert_url": ""
}
Run Code Online (Sandbox Code Playgroud)

java firebase firebase-authentication firebase-realtime-database

19
推荐指数
2
解决办法
1万
查看次数

如何使用Net Core在DbContext中获取用户信息

我正在尝试开发一个类库,我想在其中实现自定义DbContext.在SaveChanges方法中DbContext,我需要获取当前用户的信息(部门,用户名等)以供审计.DbContext代码的某些部分如下:

public override int SaveChanges()
{
    // find all changed entities which is ICreateAuditedEntity 
    var addedAuditedEntities = ChangeTracker.Entries<ICreateAuditedEntity>()
           .Where(p => p.State == EntityState.Added)
           .Select(p => p.Entity);

    var now = DateTime.Now;

    foreach (var added in addedAuditedEntities)
    {
        added.CreatedAt = now;
        added.CreatedBy = ?;
        added.CreatedByDepartment = ?
    }
    return base.SaveChanges();
}
Run Code Online (Sandbox Code Playgroud)

想到两个选项:

  • 使用HttpContext.Items保存用户信息,注入IHttpContextAccessor并从中获取信息 HttpContext.Items(在这种情况下DbContext取决于HttpContext,是否正确?)
  • 使用ThreadStatic对象而不是HttpContext.Items从对象获取信息(我读了一些ThreadStatic不安全的帖子)

问题:哪种情况最适合我的情况?你有其他建议吗?

c# entity-framework-core .net-core asp.net-core

17
推荐指数
2
解决办法
9193
查看次数