通过 Redmine .NET 设置新问题的作者 API

Setting new issue's author through Redmine .NET API

我正在尝试使用 Redmine .NET API 从 ASP.NET MVC 应用程序管理 Redmine。

MVC 应用程序需要允许用户从其 UI 创建和编辑 Issue。 (MVC 应用程序与 Redmine 具有相同的用户。)以下代码添加了一个新问题,但作者始终设置为 API 密钥的所有者。

using Redmine.Net.Api;
using Redmine.Net.Api.Types;

RedmineManager manager = new RedmineManager(host, apiKey);

Issue newIssue = new Issue();
// Set issue details
newIssue.Author = new IdentifiableName();
var user = manager.GetUsers(UserStatus.STATUS_ACTIVE, loginUserName).FirstOrDefault();
newIssue.Author.Id = user.Id;

manager.CreateObject<Issue>(newIssue);

我想将登录用户设置为问题作者。
有人知道怎么做吗?
谢谢。

Redmine 不允许设置问题的作者字段。在创建问题时始终设置为当前用户。

最简单的解决方案是使用作者的凭据通过 API(即他们的 username/password 或他们的 API 密钥)创建问题。

如果做不到,您可以使用 Redmine 的 User impersonation 功能。这允许您对所有请求使用管理员的 API 令牌。通过在您的 POST 请求中将 X-Redmine-Switch-User header 设置为另一个用户的登录名,您可以以另一个用户的身份创建问题。

虽然我没有使用您的 .NET 客户端库的经验,但他们似乎支持此功能,因为他们的 README 中提到了这一点。看来您可以使用 RedmineManager classImpersonateUser property 设置登录。

感谢@Holger Just 的回答,我明白了。

我必须将作者用户的 Login 设置为 RedmineManager.ImpersonateUser BEFORE 添加新问题。

var user = manager.GetUsers(UserStatus.STATUS_ACTIVE, loginUserName).FirstOrDefault();
manager.ImpersonateUser = user.Login;

manager.CreateObject<Issue>(newIssue);

效果很好,作者已正确更改为模拟用户。

在此之后,我必须将 null 设置为 RedmineManager.ImpersonateUser 才能重置它。