使用ServiceStack的IAuthRepository获取详细信息

时间:2019-04-02 16:22:21

标签: servicestack

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

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 };

     }
}

1 个答案:

答案 0 :(得分:1)

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

Auth存储库中的2个主要User表分别是UserAuthUserAuthDetails[Authenticate] public object Get(GetUser request) { var session = SessionAs<AuthUserSession>(); return new GetUserResponse { User = AuthRepository.GetUserAuth(session.UserAuthId), UserDetails = AuthRepository.GetUserAuthDetails(session.UserAuthId) }; } 是主表,session.UserAuthId包含来自外部提供商的其他信息,这些用户已使用OAuth进行了注册。

您可能希望同时返回两者:

UserAuth

如果仍然没有返回任何内容,请查看后端Auth Repository中使用的UserAuthDetails以及stage('Test Git') { steps { sshagent(credentials : ['denpal']) { sh 'git commit --allow-empty -m "test withCredentials"' sh 'git push origin feature/Jenkinsfile' } [Pipeline] // stage [Pipeline] stage [Pipeline] { (Test Git) [Pipeline] sshagent [ssh-agent] Using credentials git (denpal) [ssh-agent] Looking for ssh-agent implementation... [ssh-agent] Exec ssh-agent (binary ssh-agent on a remote machine) $ ssh-agent SSH_AUTH_SOCK=/tmp/ssh-WEsIsQvX4CFc/agent.12163 SSH_AGENT_PID=12166 Running ssh-add (command line suppressed) [Pipeline] // sshagent [Pipeline] } DETACH表。