3

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

MVC 应用程序需要允许用户Issue从其 UI 创建和编辑。(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);

我想将登录用户设置为问题作者。
有谁知道如何做到这一点?
谢谢。

4

2 回答 2

3

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

最简单的解决方案是使用作者的凭据来创建 API 问题(即他们的用户名/密码或他们的 API 密钥)。

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

虽然我对您的 .NET 客户端库没有经验,但他们似乎支持此功能,正如其 README 中提到的那样。看来您可以ImpersonateUser使用.RedmineManager class

于 2015-11-09T17:44:36.967 回答
1

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

在添加新问题之前,我必须将作者用户设置为LoginRedmineManager.ImpersonateUser

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

manager.CreateObject<Issue>(newIssue);

这运作良好,作者已正确更改为模拟用户。

在此之后,我必须设置nullRedmineManager.ImpersonateUser重置它。

于 2015-11-09T22:18:00.027 回答