使用 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.Db
和 base.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 存储库中的 UserAuth
和 UserAuthDetails
table .
我想获取一个用户的信息。我认为 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.Db
和 base.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 存储库中的 UserAuth
和 UserAuthDetails
table .