使用 ServiceStack 的 IAuthRepository 获取详细信息

Use ServiceStack's IAuthRepository to get detailed information

我想获取一个用户的信息。我认为 IAuthRepository 可用于检索信息,但是当我发送插入用户 ID 时,它不会 return 任何东西。我有以下代码。

public UserService(IDbConnectionFactory db)
 {
     this._db = db;
     this._authRepository = HostContext.AppHost.GetAuthRepository(base.Request);
}

我打算允许管理员访问所有用户的信息,常规用户应该只能访问他们自己的个人资料。在下面的代码中,我尝试从登录的用户中提取详细信息(只是一个例子)我可以看到用户包含信息,但测试仍然是空的。我在想 IAuthRepository 必须以其他方式连接。

[Authenticate]
public object Get(GetUser request)
{
     using (var db = _db.Open())
     {
         var session = this.SessionAs<AuthUserSession>();
         var user = Mapper.Map<UserDto>(session);
         var test = this._authRepository.GetUserAuthDetails(session.UserAuthId);
         return new GetUserResponse {Results = user };

     }
}

没有必要将 IDbConnectionFactory 注入到您自己的服务中,因为您通常会在服务上使用 base.Dbbase.AuthRepository 属性,它们是 Multitenancy-aware。另请注意,您在服务中打开的 db 也是不必要的,因为它从未被使用过。

授权存储库中的 2 个主要用户 table 是一个 UserAuth,它是主要的 table 和 UserAuthDetails,它为用户保存来自外部提供商的附加信息已注册 OAuth。

您可能想要return两者:

[Authenticate]
public object Get(GetUser request)
{
    var session = SessionAs<AuthUserSession>();
    return new GetUserResponse {
        User = AuthRepository.GetUserAuth(session.UserAuthId),
        UserDetails = AuthRepository.GetUserAuthDetails(session.UserAuthId)
    };
}

如果它仍然没有 returning 任何东西,请查看使用的 session.UserAuthId 以及后端 Auth 存储库中的 UserAuthUserAuthDetails table .